2012-09-18 20 views
39

Jestem nowy w Git i używam wtyczki EGit eclipse do zatwierdzenia.git stash i git pull

Zmodyfikowałem kilka plików i zapisałem zmiany, a następnie zrobiłem git pull w linii komend, które wywołało wszystkie najnowsze poprawki. Potem zrobiłem Apply stashed changes z EGit. Teraz zastosował moje zmiany i zmiany, które zostały wyciągnięte z ostatniego zatwierdzenia ukrytych plików zgasły. Nie jestem pewien, dlaczego nie zapytał mnie o konflikty scalania i nadpisać moje zmiany i stracił poprzednie zmiany zatwierdzenia.

Jak uzyskać te zmiany?

+0

To nie brzmi wiarygodnie. Skrytka ma zastosowanie albo przynosi nieskonfliktowane zmiany, albo powoduje konflikty scalania. Myślę, że zapomniałeś o czymś wspomnieć. Możesz również powtórzyć swoje kroki, najprawdopodobniej twój schowek wciąż znajduje się na liście, użyj 'git ukryj listę' żeby to pokazać. – kan

Odpowiedz

103

Kiedy masz zmiany w kopii roboczej, z linii poleceń zrobić:

git stash 

To będzie ukryta zmiany i wyczyścić swój raport o stanie

git pull 

Będzie to ciągnąć zmian od góry oddziału. Upewnij się, że w raporcie napisano szybko. Jeśli nie, to prawdopodobnie robi niezamierzoną seryjnej

git stash pop 

ten będzie miał zastosowanie ukryty zmiany z powrotem do kopii roboczej i usunąć zmiany od zapas, chyba że masz konfliktów. W przypadku konfliktu pozostaną one w schowku, aby można było zacząć od nowa w razie potrzeby.

jeśli chcesz zobaczyć, co jest w zapasach

git stash list 
+3

Czy istnieje możliwość wykonania go jednym poleceniem? –

+0

@java_newbie, Jeśli chcesz to zrobić ze schowkiem i nie ciągnij, nie ma mowy. Ale możesz osiągnąć ten sam wynik z rebase. Polecenie "git rebase origin/" powinno zrobić to samo. – yilmazhuseyin

+3

Myślę, że to zrobi: 'git stash && git pull && git stash pop' –