Ponownie czytając pytanie, brzmi to tak, jakbyś chciał przywrócić zmiany, które są w twoim drzewie roboczym, a nie zmiany, które zostały wcześniej zatwierdzone, ale niektóre z pozostałych odpowiedzi sprawiają, że brzmi to tak, jak moje czytanie może być błędne. Możesz wyjaśnić?
Jeżeli zmiany są możliwe tylko w kopii roboczej, najprostszym sposobem na to jest do etapu zmian, które chcesz zachować z:
git add -i <file>
Potem wyrzucić zmiany, które nie chcą zachować, sprawdzając wersję indeksu:
git checkout -- <file>
Then unstage zmian, jeśli nie chcesz je wystawił jeszcze:
git reset -- <file>
Ten przepis tylko przywraca wybrane zmiany do pliku (lub plików określonych) i nie tworzy żadnego tymczasowego zatwierdzenia, które następnie wymaga przywrócenia.
Jeśli chcesz wybiórczo stosują tylko niektóre ze zmian dokonanych w poprzednich zatwierdzeń następnie można przywrócić plik do poprzedniego pierwszego stanu popełnione:
git reset <commit_before_first_unwanted_change> -- <file>
Następnie można śledzić poprzednią recepturę git add -i <file>
na scenie te zmiany, które chcesz zachować, git checkout -- <file>
, aby wyrzucić niepożądane zmiany i git reset -- <file>
, aby "anulować" zmiany.
to spowoduje zmiany, które chcę zachować, prawda? Nie chcę jeszcze wprowadzać tych zmian. mm może podejmuję zobowiązania zbyt poważnie. Może powinienem teraz odpocząć, ponieważ wszystko odbywa się w lokalnym repozytorium. btw jaki jest reset git --soft HEAD^do? – Pradeep
"git reset --soft HEAD ^" cofa commit w tym sensie, że zachowuje katalog roboczy i indeks taki jak był, i przenosi bieżące oddzwonienie do oddziału. –
Dzięki Jakub. Paolo, dlaczego miałby miękki reset do głowy - 1 trzeba tutaj? Częściowe zatwierdzenie i twardy reset powinny być wystarczające, czy nie jest to utrzymanie pewnych zmian i odrzucenie innych? – Pradeep