git - Twoja gałąź wyprzedza 'origin / master' o 1 zatwierdzenie

107

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ć?

sam
źródło
Jeśli chcesz cofnąć zatwierdzenie - spójrz na podobne pytanie .
ДМИТРИЙ МАЛИКОВ
1
Nie wiem, czego używasz do recenzji kodu. Prosta odpowiedź na proste pytanie, jak git reset HEAD^
cofnąć
zresetowałem HEAD. ale kiedy próbuję pchać, to mówi mi D file1.py, kiedy próbowałem psuh, a potem znowu mówi mi, że twoja gałąź wyprzedza origin / master o 1 commit
sam
Co masz na myśli, mówiąc „Chcę przesłać te pliki do recenzji”? Czy chcesz, aby inni ludzie widzieli Twoje zaangażowanie?
Jake Greene,
mój kod zostanie najpierw przejrzany, a następnie zatwierdzony. więc najpierw chcę przekazać kod do przeglądu, ale przez pomyłkę się zgodziłem
sam

Odpowiedzi:

128

Nie możesz wcisnąć niczego, co nie zostało jeszcze popełnione. Kolejność operacji to:

  1. Dokonaj zmiany.
  2. git add - to przygotowuje zmiany do zatwierdzenia
  3. git commit - to zatwierdza Twoje zmiany zainscenizowane lokalnie
  4. git push - to wypycha twoje zatwierdzone zmiany do pilota

Jeś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: addi commitsą operacjami lokalnymi push, pulli fetchsą 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ć.

tdammers
źródło
4
Aha ok. więc oznacza to, że po zatwierdzeniu muszę to zrobić
sam
4
Dobre wyjaśnienie - osoba pytająca prawdopodobnie nie chce faktycznie cofać zatwierdzenia, ale raczej poprosić ludzi o przejrzenie zatwierdzenia przed wysłaniem go do originrepozytorium. Polecam również przeczytanie kilku samouczków / wstępów do gita na git-scm.com/documentation
dbr Kwietnia
1
Kiedy mój status git mówi: „Twoja gałąź wyprzedza 'pochodzenie / rozwój' o 1 zatwierdzenie”. jak dokładnie mam zobaczyć, że pliki zostały zmienione? git diff nie wydaje się nic robić
Tom,
Czasami ktoś tam pracował. Zrób pull przed swoim pushem
Adrian P.
68

git reset HEAD^ --soft (Zapisz zmiany, wróć do ostatniego zatwierdzenia)

git reset HEAD^ --hard (Odrzuć zmiany, powrót do ostatniego zatwierdzenia)

Juanito Fatas
źródło
3
Jakie jest znaczenie GŁOWY z marchewką „^”? Widziałem też, jak napisano to bez marchewki.
Mugen
29

Jeśli chcesz po prostu odrzucić zmiany i powrócić do ostatniego zatwierdzenia (tego, który chciałeś udostępnić):

git reset --hard HEAD~

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

Bezpieczniejszą alternatywą jest bieganie

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 
Shep
źródło
21

Rozwiązałem to, uruchamiając proste:

git pull

Nic więcej. Teraz pokazuje:

# On branch master
nothing to commit, working directory clean
karlingen
źródło
Może to spowodować problem, jeśli zostanie utworzonych więcej niż jedna gałąź, która nie jest wymagana.
Anil Kumar Arya,
1
wróciłeś do swojego odległego stanu i straciłeś swoją ostatnią pracę: D
Gucho Ca,
13

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

OZI
źródło
4
git reset HEAD <file1> <file2> ...

usuń określone pliki z następnego zatwierdzenia

Bnjmn
źródło