Jestem nowicjuszem w git i pracuję na git.
Dodałem kilka plików w git:
git add <file1>
git add <file2>
potem chciałem przekazać to do przeglądu, ale omyłkowo to zrobiłem
git commit
więc pliki, które zmieniłem, nie trafiają do recenzji.
Jeśli teraz wprowadzę polecenie:
git status
to mówi
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
Chcę cofnąć to zatwierdzenie i chcę przekazać te pliki do przeglądu, a nie zatwierdzić. Czy ktoś może mi powiedzieć, jak mogę to zrobić?
git reset HEAD^
Odpowiedzi:
Nie możesz wcisnąć niczego, co nie zostało jeszcze popełnione. Kolejność operacji to:
git add
- to przygotowuje zmiany do zatwierdzeniagit commit
- to zatwierdza Twoje zmiany zainscenizowane lokalniegit push
- to wypycha twoje zatwierdzone zmiany do pilotaJeśli będziesz naciskać bez zobowiązania, nic nie zostanie przepchnięte. Jeśli zatwierdzisz bez dodawania, nic nie zostanie zatwierdzone. Jeśli dodasz bez zatwierdzania, nic się nie dzieje, git jedynie pamięta, że dodane zmiany powinny być brane pod uwagę przy następnym zatwierdzeniu.
Komunikat, który widzisz (twoja gałąź wyprzedza o 1 zmianę) oznacza, że twoje lokalne repozytorium ma jedno zatwierdzenie, które nie zostało jeszcze przesłane.
Innymi słowy:
add
icommit
są operacjami lokalnymipush
,pull
ifetch
są operacjami, które współdziałają z pilotem.Ponieważ wydaje się, że w miejscu, w którym pracujesz, istnieje oficjalny przepływ pracy w zakresie kontroli źródła, powinieneś zapytać wewnętrznie, jak należy to zrobić.
źródło
origin
repozytorium. Polecam również przeczytanie kilku samouczków / wstępów do gita na git-scm.com/documentationgit reset HEAD^ --soft
(Zapisz zmiany, wróć do ostatniego zatwierdzenia)git reset HEAD^ --hard
(Odrzuć zmiany, powrót do ostatniego zatwierdzenia)źródło
Jeśli chcesz po prostu odrzucić zmiany i powrócić do ostatniego zatwierdzenia (tego, który chciałeś udostępnić):
Możesz chcieć sprawdzić, aby upewnić się, że chcesz tego (
git log
), ponieważ utracisz wszystkie zmiany.Bezpieczniejszą alternatywą jest bieganie
źródło
Rozwiązałem to, uruchamiając proste:
Nic więcej. Teraz pokazuje:
źródło
git reset HEAD ^
wtedy powinny pojawić się zmodyfikowane pliki.
Możesz przenieść zmodyfikowane pliki do nowej gałęzi
posługiwać się,
git checkout -b newbranch
git checkout commit -m "files modified"
git push origin newbranch
git checkout master
wtedy powinieneś być na czystej gałęzi, a twoje zmiany powinny być przechowywane w nowej gałęzi. Możesz później po prostu scalić tę zmianę w gałęzi głównej
źródło
usuń określone pliki z następnego zatwierdzenia
źródło