Potrzebuję sposobu na wyeksportowanie ukrytej zmiany na inny komputer.
Zrobiłem to na Computer1
$ git stash save feature
Próbuję pobrać łatkę ukrytą do pliku, a następnie zaimportować ją na inny komputer
$ git stash show -p > patch
To polecenie daje mi plik, który mogę przenieść na inny komputer, na którym klonowane jest to repozytorium, ale pytanie brzmi, jak ponownie zaimportować go jako skrytkę.
Dzięki
git stash save
jest teraz przestarzałe na korzyśćgit stash push
Odpowiedzi:
Możesz zastosować plik łatki (bez zatwierdzania zmian), po prostu uruchamiając
Następnie możesz po prostu utworzyć nową skrytkę z bieżącego katalogu roboczego:
źródło
git stash show "stash@{0}" -p > patch
zamiast drugiego polecenia powłoki OP.stash@{0}
...alternatywnie możesz utworzyć gałąź ze swojego skrytki (na komputerze 1), używając
zatwierdzić zmiany:
następnie dodaj go jako pilota na komputerze 2:
teraz możesz pobrać zdalne informacje za pomocą
teraz możesz zaimportować zatwierdzenie w dowolny sposób; używając git cherry-pick , git rebase lub cokolwiek zechcesz ... Jeśli chcesz, aby wyglądało to tak, jakbyś właśnie zastosował git stash ; możesz użyć git cherry-pick - no-commit.
Jeśli nie masz bezpośredniego połączenia między komputerem1 a komputerem2; możesz użyć pilota (takiego jak github lub coś podobnego):
i na komputerze2:
źródło
git stash list --oneline
), więc technicznie nie musisz stosować ukrytej skrytki do nowego obiektu zatwierdzającego. Innymi słowy, utworzenie nowego oddziału nie jest konieczne. Jednak przekazanie skrytki bezpośrednio do pilota jest co najmniej trudne.Alternatywnie możesz wyeksportować całe lokalne skrytki do innego komptera w następujący sposób
git pull
zarówno w starym, jak i nowym katalogu git, aby mieć pewność, że oba zawierają najnowsze zmiany.źródło
Jak zrobić eksport Stash w SourceTree:
Zastosuj skrytkę i dokonaj zatwierdzenia
Kliknij zatwierdzenie i stwórz z niego łatkę, zabierz ze sobą plik łaty.
Przejdź do innego repozytorium, wybierz tę samą gałąź nadrzędną, której właśnie użyłeś w 1)
Działania / Zastosuj łatkę, wybierz Tryb: Modyfikuj pliki kopii roboczej, wciśnij Zastosuj łatkę, teraz masz niezatwierdzone modyfikacje łatki w bieżącym środowisku roboczym
Utwórz nową skrytkę dla bieżącego repozytorium
źródło
Możesz utworzyć ukryty plik łatki z jednego komputera, a następnie udostępnić ten plik łatki innym komputerom.
Tworzenie skrytki jako łatki
„Stash @ {0}” to odnośnik do skrytki, który utworzy plik łatki z najnowszą skrytką. Jeśli chcesz użyć innego, użyj polecenia,
$ git stash list
aby wyświetlić listę skrytek i wybierz, który chcesz załatać.Stosowanie poprawki
Teraz przenieś tę skrytkę na inną maszynę i wklej ją do folderu głównego swojego projektu. Następnie uruchom to polecenie
Jeśli wystąpi błąd i chcesz cofnąć zmianę
źródło
Inną opcją jest
rsync
do.git
folderu z jednego komputera do innego komputera.rsync
przetwarza tylko zmiany plików (szybsze niż kopia).Wadą tego podejścia jest również zastąpienie konfiguracji, co może nie być pożądane, jeśli uruchomisz różne konfiguracje .git między dwoma komputerami. Ale można to rozwiązać, wykluczając pliki z
--exclude
opcją wrsync
.Ogólnie rzecz biorąc, myślę, że natywne rozwiązanie Git jest czystsze, ale ten
rsync
hack może być miły dla kogoś, kto się spieszy i może lepiej znać rsync niż git.źródło
Polecenie uruchomienia z oryginalnego postu:
nie działało dla mnie (z jakiegoś powodu stworzyło nieużywalne pliki łat). Zamiast tego musiałem:
za każdą skrytkę, którą chciałem przenieść. Następnie umieściłem repozytorium „nadrzędne” w pliku: /// zasięg repozytorium „podrzędnego” i wykonałem następujące czynności dla każdego zatwierdzenia ukrytego:
To jest bardziej skomplikowane, ale załatwiło sprawę.
źródło
Jeśli chcesz przenieść zmiany z jednego komputera na drugi, zawsze możesz zatwierdzić zmiany na swoim komputerze, a następnie wykonać miękki reset na jego komputerze.
Gabinet
git commit -m "-stash-"
Kuchnia
git reset --soft HEAD~1
źródło
Skrytka jest specjalnym zatwierdzeniem scalania drzewa roboczego między zatwierdzeniem bazowym a indeksem. Jednym ze sposobów może być zapisanie każdego z nich jako oddzielnych łatek, pobranie pierwszego skrytki nadrzędnego, przywrócenie indeksu i drzewa pracy z dwóch poprawek i wreszcie przywrócenie skrytki (wydaje się, że jedna odpowiedź idzie w ten sposób).
Jest to potrzebne do pełnego odtworzenia wszystkich informacji ze skrytki, a jeśli nie przejmujesz się tym, powinieneś przynajmniej sprawdzić pierwszego rodzica skrytki przed jej przywróceniem, aby uniknąć konfliktów i śledzić, gdzie skrytka została utworzona.
To właśnie zrobiłem, aby w pełni przywrócić wszystkie skrytki z jednego repo do drugiego. Jeśli nie możesz mieć ich na tym samym komputerze, możesz zapisać tagi ukryte w pakiecie po ich utworzeniu i skopiować listę referencji i pakiet na komputer docelowy.
Z katalogu głównego oryginalnego repozytorium:
stash_
+ liczb (y) w logicznym oznaczeniu ukryć)Uwaga: To wymaga bash lub kompatybilnej powłoki (ksh, zsh powinny zrobić ...) Możesz również zwiększyć zmienną, np.
stash_$((i++))
Jeśli twoja powłoka nie obsługuje${param//pattern}
Teraz w nowym repozytorium dla każdego ref:
źródło