2011-07-20 18 views
10

Próbuję wprowadzić nowe zmiany, ale mam konflikt plików. Po wypróbowaniu, otrzymuję następujący błąd:Git każe mi zaciągnąć, a potem popełnić, a następnie wyciągnąć?

Merge the remote changes (e.g. 'git pull') before pushing again. See the 
'Note about fast-forwards' section of 'git push --help' for details. 

Dobrze, więc musimy użyć polecenia git pull. próbuję użyć git pull a następnie uzyskać ten błąd:

error: Your local changes to the following files would be overwritten by merge: 
    db/profile_edit.php 
Please, commit your changes or stash them before you can merge. 

Ale gdy próbuję popełnić, wracam do pierwszego błędu. Co powinienem zrobić? Zmiany na zdalnym repo są nowsze niż te na moim lokalnym komputerze. Tak więc, jak mogę go otworzyć za pomocą narzędzia diff i wprowadzić zmiany, a następnie powiedzieć git, że wprowadziłem zmiany, aby pozwolić mi wprowadzać zmiany?

Odpowiedz

23

Spróbuj zrobić

$ git pull --rebase 

Aby wyciągnąć zdalnych zmian przed Ciebie, a następnie popełnić. I sprawdź, czy to działa.

Jeśli to nie zadziała, spróbuj zamiast tego:

$ git stash 
$ git pull --rebase 
$ git stash pop 

Aby zapisać zmiany na stash zastosować zdalny zobowiązuje wewnątrz obróbce repozytorium, a następnie zastosować zmiany (zapisane w stash) wewnątrz ponownie w repozytorium pracy.

8

Po pierwsze, myślę, że gdybyś miał git add, wtedy git commit, twoje lokalne repozytorium byłoby wystarczająco czyste, aby wykonać git pull.

Jeśli jednak mogą wystąpić zmiany, których nie chcesz zatwierdzać, dopóki nie zobaczysz, co się stało na wyższym poziomie, możesz użyć git stash. Spowoduje to tymczasowe oczyszczenie katalogu roboczego i zapisanie zmian, aby można było pobrać (polecam git pull --rebase, aby uniknąć punktów scalania - ale jest to problem z osobistym gustem). Po wycofaniu zmian w wersji upstream możesz odzyskać swoje lokalne modyfikacje za pomocą git stash pop. Po wyczyszczeniu konfliktów i pozbyciu się niepotrzebnych zmian, możesz dodać, zatwierdzić, a następnie wcisnąć.

+0

+1, ładne wyjaśnienie – sha256

5

Dajesz się pomylić z poleceniami.

git commit zapisuje zmiany do bazy danych Git za git pull przynosi zdalnego popełnia w swoim repo

starasz się pociągnięciem z niezatwierdzonych zmian, więc git jest prośbą o popełnić tych pierwszych (lub git stash je), aby móc scalić lokalne zmiany ze zdalnymi.

Powiązane problemy