2012-04-16 12 views
66

Jestem nowicjuszem w git i pracuję nad git.git - Twój oddział wyprzedza 'origin/master' przez 1 commit

Dodałem kilka plików w git:

git add <file1> 
git add <file2> 

następnie chciałem pchnąć że do przeglądu, ale przez pomyłkę zrobiłem

git commit 

więc pliki które zostały zmienione nie idź do Opinie.
Teraz gdybym wpisać komendę:

git status 

mówi

# On branch master 
# Your branch is ahead of 'origin/master' by 1 commit. 
# 
nothing to commit (working directory clean) 

Chcę przywrócić że popełnić i chcę naciskać te pliki do przeglądu zamiast popełnić. Czy ktoś może mi powiedzieć, jak mogę to zrobić?

+0

Jeśli chcesz cofnąć swoje zatwierdzenie - spójrz na [podobne pytanie] (http://stackoverflow.com/questions/927358/git-undo-last- popełnić). –

+0

Nie wiem, czego używasz do recenzji kodu. Prostą odpowiedzią na proste pytanie, jak usunąć zatwierdzenie, jest 'git reset HEAD ^' – Anonymoose

+0

i zresetowałem HEAD. ale kiedy próbuję pchać, wtedy mówi mi, że kiedy próbowałem psuh, to znowu mówi mi, że twoja gałąź wyprzedza źródło/master przez 1 commit – sam

Odpowiedz

97

Nie można wcisnąć wszystko, co nie zostało jeszcze popełnione. Kolejność działań to:

  1. Dokonaj zmiany.
  2. git add - to etapy zmian za popełnienie
  3. git commit - to zobowiązuje swoich zainscenizowane zmiany lokalnie
  4. git push - to popycha swoje zaangażowanych zmian do zdalnego

Jeśli naciśniesz bez popełnienia, nic nie zostanie wciśnięty . Jeśli wykonasz commit bez dodawania, nic nie zostanie zatwierdzone. Jeśli dodasz bez popełniania, nic się nie dzieje, git tylko pamięta, że ​​dodane przez ciebie zmiany powinny być brane pod uwagę przy następnym zatwierdzaniu.

Wiadomości, które widzisz (twoja gałąź wyprzedza 1 commit) oznacza, że ​​twoje lokalne repozytorium ma jedno zatwierdzenie, które nie zostało jeszcze przekazane.

Innymi słowy: add i commit są lokalne działania, push, pull i fetch są operacje, które oddziałują z pilota.

Ponieważ wydaje się, że w miejscu pracy działa oficjalny przepływ pracy z kontrolą źródła, należy wewnętrznie zapytać, jak należy postępować.

+3

aha ok. więc oznacza to, że po zatwierdzeniu muszę go wypchnąć. – sam

+4

Dobre wyjaśnienie - pytanie prawdopodobnie nie chce faktycznie cofnąć zatwierdzenia, ale raczej sprawić, że ludzie przejrzą zatwierdzenie przed wysłaniem go do repozytorium 'origin'. Polecam również przeczytanie kilku tutoriali/intra na temat git na http://git-scm.com/documentation – dbr

+0

Kiedy mój status git mówi "Twój oddział wyprzedza" pochodzenie/rozwój "przez 1 commit." jak dokładnie widzę, że pliki zostały zmienione? git diff nie wydaje się nic robić – Tom

3
git reset HEAD <file1> <file2> ... 

usunąć określone pliki z następnego popełnić

19

Jeśli chcesz po prostu wyrzucić zmiany i powrócić do ostatniego zatwierdzenia (ten, który chciał podzielić):

git reset --hard HEAD~ 

Możesz chcieć sprawdzić, aby absolutnie upewnić się, że tego chcesz (git log), ponieważ utracisz wszystkie zmiany.

Bezpieczniejsze alternatywą jest uruchomienie

git reset --soft HEAD~ # reset to the last commit 
git stash    # stash all the changes in the working tree 
git push    # push changes 
git stash pop   # get your changes back 
32

git reset HEAD^ --soft (Zapisz zmiany, z powrotem do ostatniego zatwierdzenia)

git reset HEAD^ --hard (Odrzuć zmiany, z powrotem do ostatniego zatwierdzenia)

12

Postanowiłem to po prostu działa prosty:

git pull 

Nothing jeszcze. Teraz to pokazane:

# On branch master 
nothing to commit, working directory clean 
+0

Może powodować problem, jeśli będzie więcej niż jeden utworzony oddział, który nie jest wymagany. –

+0

wróciłeś do siebie i straciłeś ostatnią pracę: D –

2

zresetowane git HEAD^

następnie zmodyfikowane pliki powinny pokazać się.

Można by przenieść zmodyfikowanych plików do nowej gałęzi

użytkowania, git checkout -b newbranch git checkout commit -m "pliki zmodyfikowane" git pochodzenie Push newbranch

git checkout mistrz

powinieneś być na czystej gałęzi, a twoje zmiany powinny być przechowywane w newbranch. Możesz później po prostu scalić tę zmianę w główny oddział