Wenn Sie nicht möchten, dass die Dateien geändert (und dann wieder geändert) werden, um Teil des Verlaufs zu sein, müssen Sie einen Verlauf neu schreiben. Wenn die fraglichen Commits gepusht (und möglicherweise mit anderen Devs geteilt) wurden, sind die durch das Neuschreiben entstandenen Probleme wahrscheinlich schlimmer als die oben beschriebenen Probleme, die Sie vermeiden möchten.
Der einfachste Weg, dies zu tun ist mit einer interaktiven Rebase. Wenn Sie
... A --- B --- C --- D <--(current_branch)
wo current_branch
haben ist, was Zweig Sie gerade arbeiten, und B
ist der Commit, in dem Sie die Methode hinzugefügt haben, können Sie sagen
git rebase -i A current_branch
(ersetzt A
mit dem SHA-ID des entsprechenden Commits). Dies bringt einen Texteditor mit einer TODO-Liste hervor, wobei jede Zeile ein Commit darstellt.
Suchen Sie den Befehl für B
(es sollte die erste Zeile sein). Wenn die nur Sache in der Festschreibung die Änderung ist, die Sie zurücksetzen möchten, löschen Sie die Zeile. Andernfalls ändern Sie das erste Wort in der Zeile von "Auswählen" zu "Bearbeiten".
Dann speichern und beenden Sie den Editor. Folgen Sie nun den Anweisungen. Wenn Sie gesagt haben, dass Sie B
bearbeiten sollen, erhalten Sie eine Aufforderung, Ihre Änderungen vorzunehmen. So stellen Sie die fraglichen Dateien wieder her. Wenn das Entfernen von Änderungen aus B
Konflikte verursacht, werden Sie aufgefordert, diese Konflikte zu lösen.
Schließlich erhalten Sie ein erfolgreiches Fütterungsmaterial, aber wichtig zu beachten: IF current_branch
zuvor geschoben worden war, dann jetzt Sie
haben
... A --- B --- C --- D <--(origin/current_branch)
\
B' --- C' --- D' <--(current_branch)
Wenn Sie drücken versuchen, wird git beschweren (weil das Update auf current_branch
würde nicht ein Schnellvorlauf sein). Und wenn Sie den Push erzwingen, müssen alle anderen, die den Zweig benutzen, sich jetzt von einer "Upstream-Rebase" erholen (siehe git rebase
Dokumente unter "Recovery von Upstream-Rebase").
Wenn ich sage, dass Sie sich mit den anderen Repo-Benutzern abstimmen müssen, richte ich Sie nicht an, nett zu sein; Ich warne Sie, dass Ihre Arbeit rückgängig gemacht wird, wenn Sie dies nicht tun und sie den daraus resultierenden Wiederherstellungsprozess falsch handhaben.
Dank Mark, ich bin die einzige Person, die zu diesem Feature-Zweig beiträgt, und ich habe nur 4 meiner eigenen Commits darauf, und die fraglichen Dateien wurden nur beim ersten Commit geändert, also sollte es hoffentlich folgen. – berimbolo
Ich habe dies erfolgreich mit einer Kombination von Git-Reset und Git-Checkout im interaktiven Rebase-Modus arbeiten, dann mit git commit --amend und schließlich Git Rebase - weiter. Vielen Dank für die Hilfe! – berimbolo