2013-12-12 34 views
23

Jeśli pracuję w oddziale A i nagle muszę pracować na oddziale B, zanim będę gotowy z zatwierdzeniem w oddziale A, przechwycę moje zmiany na A, checkout B, wykonam tam pracę, następnie kasę A i zastosuję skrytkę.Kiedy należy używać git skrytki?

Jeśli pracuję nad A i chcę przestać pracować przez cały dzień, czy powinienem zatrzymać moją pracę, a następnie zastosować ją następnego dnia, kiedy wznowię pracę, czy powinienem zostawić rzeczy takimi, jakimi są - niezatwierdzone modyfikacje pliki w katalogu roboczym. Nie widzę powodu, dla którego w tym przypadku musiałbym używać ukryty, chyba że jest jakaś korzyść bezpieczeństwa.

Również inny scenariusz - pracuję zarówno w pracy, jak iw domu. Jeśli nie jestem gotowy z zatwierdzeniem, gdy chcę wrócić do domu, czy mogę zatrzymać moją pracę, przesłać ją do GitHub, a następnie wyciągnąć to do domu?

Odpowiedz

31

Skrytka to po prostu wygodna metoda. Ponieważ gałęzie są tak tanie i łatwe w zarządzaniu gitem, ja osobiście prawie zawsze wolę tworzyć nową gałąź tymczasową niż przechować, ale to głównie kwestia gustu.

jedno miejsce lubię stashing jest, jeśli odkryję zapomniałem coś w moim ostatnim popełnić i już rozpoczął prace nad następnym w tej samej branży:

# Assume the latest commit was already done 
# start working on the next patch, and discovered I was missing something 

# stash away the current mess I made 
git stash save 

# some changes in the working dir 

# and now add them to the last commit: 
git add -u 
git commit --ammend 

# back to work! 
git stash pop 
1

Polecenie ukrywania spowoduje przechowanie zmian, które wprowadziłeś od ostatniego zatwierdzenia. W twoim przypadku nie ma powodu do ukrywania się, jeśli masz zamiar kontynuować pracę nad nim następnego dnia. Używam tylko skrytki do cofania zmian, których nie chcesz zatwierdzić.

+0

Nie, 'git stash' nie zmieni twojego oddziału. W szczególności nie "przywróci" żadnych popełnionych zmian. Tylko (tymczasowo) odrzuci wszelkie niezatwierdzone zmiany w plikach. - To może wydawać się wybredne, ale takie słowa mają szczególne znaczenie w kontekście git. Naprawdę nie powinieneś ich mieszać. – michas

+0

Dzięki za wskazanie tego. Zmieniłem odpowiednio odpowiedź. – Severin

+0

W git "gałąź" jest zdefiniowana jako seria zatwierdzeń. 'git stash' nie będzie dotykać żadnych zatwierdzeń i dlatego nie będzie modyfikował żadnego odgałęzienia. Nie "usunie" niczego z gałęzi i nie "zresetuje" jej w żaden sposób. Oddział pozostaje taki sam, zmieniają się tylko pliki w drzewie roboczym. - To są dwie zupełnie różne rzeczy. – michas

0

Jeśli trafisz git stash gdy masz zmiany w kopii roboczej (nie w obszarze przemieszczania), git utworzy ukryty obiekt i popchnie na stos skrytek (tak jak zrobiłeś git checkout -- ., ale nie stracisz zmian). Później możesz wyskoczyć z góry stosu.

Powiązane problemy