Ile aktów zatwierdzenia trzeba cofnąć i wybrać? Jeśli to tylko jeden, może wziąć gałąź tuż przed nią, sprawdź plik, który popełniłeś, a następnie użyj git add -p
, aby dodać go w taki sposób, w jaki chciałeś. Następnie możesz wrócić do miejsca, w którym byłeś i odebrać plik z twojego oddziału tymczasowego.
czyli:
git checkout -b temp troublesome-commit^
git checkout troublesome-commit -- path/to/file
git add -p path/to/file
git commit -c troublesome-commit
git checkout @{-1}
git checkout temp -- path/to/file
git commit path/to/file
git branch -D temp
Inne alternatywy obejmują wracając i edycji commit z git rebase -i
(oznakowanie popełnić jak edit
, następnie robi git reset HEAD^
i ponawianie commit kiedy spadł z powrotem do płaszcza).
Jeśli zmiany, które należy wybrać, są rozłożone na serię zatwierdzeń, lepszym rozwiązaniem może być wyodrębnienie ich jako poprawek (lub poprawki obejmujących je wszystkie) i ręczna edycja poprawki, eliminując zmiany chcesz zachować i karmić resztę w git apply --reverse
.
Myślę, że właśnie tego szukam dzięki –
W tym prostym przypadku użycia, który każdy inny system kontroli wersji po prostu wywołuje "przywrócić", dlaczego polecenie Git jest tak mało znane? –
@ Jan Czy polecenie "revert" innych systemów kontroli wersji pozwala ci wybrać, które zmiany w pliku są cofane?Naprawdę pytam, ponieważ mam tylko doświadczenie z CVS i Git. W Git, 'git checkout - path/to/file' jest pojedynczym poleceniem, które przywraca wszystkie zmiany w tym pliku, ale to nie jest to samo co powyżej. – spacemanaki