Pracując z git, po kilku „commitach” i kilku „push”, zdałem sobie sprawę, że używam złej gałęzi!
Teraz muszę w jakiś sposób usunąć moje zmiany w evil_branch i zatwierdzić i wypchnąć zmiany w right_branch
Jaki jest najlepszy (i prosty) sposób na zrobienie tego?
Dziękuję Ci
Odpowiedzi:
przełącz się na tę gałąź, sprawdź
git log
igit revert
te zatwierdzenia indywidualnie. Gdy już to zrobisz, przełącz się z powrotem do żądanej gałęzi i tam możesz użyćgit cherry-pick
do wybrania określonych zatwierdzeń z git refs i scalenia go z odpowiednią gałęzią.Jeśli zatwierdzenia są zgrupowane razem i nie ma żadnych zatwierdzeń wypychanych po twoich brudnych zatwierdzeniach, możesz nawet użyć
git reset
tej złej gałęzi do stanu tuż przed zatwierdzeniami, a następnie wykonać to ponownie, używając,git cherry-pick
aby umieścić swoje zatwierdzenia we właściwej gałęzi.źródło
git cherry-pick commitsha1 commitsha2
.revert
jest o wiele czystszy i mniej dramatyczny niż wtedyreset
, gdy naprawdę chcesz usunąć coś wrażliwego (poświadczenia?)Najprostszym sposobem jest użycie
git rebase
. Załóżmy, że masz takie ustawienie:Chcesz przenieść zmianę C3, C4 do prawej gałęzi.
Teraz jest to ustawienie
Następnie musisz siłą pchać swoje wyniki (JEŚLI nikt jeszcze nie zsynchronizował się ze zdalnym repozytorium):
źródło
git push -f
lepszego wykorzystaniagit push --force-with-lease
. Przynajmniej zapewnia to, że zdalne odniesienie będzie aktualizowane tylko wtedy, gdy nikt nie włożył innych zatwierdzeń do twoich zatwierdzeń.Trochę skrótu do odpowiedzi Dhruvy
źródło