Oryginalny plakat stwierdza:
Najlepszą odpowiedzią, git revert
jaką ktoś mógł mi dać, było użycie X razy, aż dotrę do pożądanego zatwierdzenia.
Powiedzmy więc, że chcę wrócić do zatwierdzenia, które ma 20 starych zatwierdzeń, musiałbym uruchomić go 20 razy.
Czy jest na to łatwiejszy sposób?
Nie mogę użyć resetowania, ponieważ to repozytorium jest publiczne.
Używanie git revert
X razy nie jest konieczne . git revert
może zaakceptować zakres zatwierdzeń jako argument, więc wystarczy go użyć tylko raz, aby cofnąć zakres zatwierdzeń. Na przykład, jeśli chcesz cofnąć ostatnie 20 zatwierdzeń:
git revert --no-edit HEAD~20..
Commit zakres HEAD~20..
jest skrótem HEAD~20..HEAD
i oznacza „rozpocznie się od 20 th rodzic główki popełnił, i przywrócić wszystkie rewizje po to do głowy”.
Spowoduje to cofnięcie ostatnich 20 zatwierdzeń, przy założeniu, że żadne z nich nie jest zatwierdzone przez scalenie. Jeśli istnieją zatwierdzenia scalania, nie możesz cofnąć ich wszystkich za pomocą jednego polecenia, musisz cofnąć je indywidualnie za pomocą
git revert -m 1 <merge-commit>
Zauważ też, że testowałem przy użyciu zakresu z git revert
użyciem gita w wersji 1.9.0. Jeśli używasz starszej wersji git, użycie zakresu z git revert
może, ale nie musi, działać.
W takim przypadku git revert
jest preferowany git checkout
.
Zauważ, że w przeciwieństwie do tej odpowiedzi, która mówi, aby użyćgit checkout
, git revert
faktycznie usunie wszystkie pliki, które zostały dodane w jednym z przywracanych zatwierdzeń , co sprawia, że jest to właściwy sposób na przywrócenie szeregu wersji.
Dokumentacja