Wählen Sie also beim Rebasieren sowohl das Commit, bei dem Sie die Datei versehentlich hinzugefügt haben, als auch das, zu dem Sie die Datei in dieser Reihenfolge hinzufügen möchten. Wenn sich die Datei in einem späteren Commit befindet, aber in einem früheren Commit sein sollte, müssen Sie die Zeilen neu anordnen. Zum Beispiel beginne ich mit
pick 8de731b Commit with missing file.
pick bbef925 Commit with too many files.
pick 52490ce More history.
muss ich es, zu
Dann
# In the commit containing an extra file
git reset HEAD^ badfile.c
git commit --amend
git rebase --continue
# Now in the commit to add it to
git add badfile.c
git commit --amend
git rebase --continue
Leider
edit bbef925 Commit with too many files.
edit 8de731b Commit with missing file.
pick 52490ce More history.
ändern, wenn in einem Zweig Geschichte bearbeiten, weiß ich nicht, von Jede Möglichkeit, den Verlauf in allen Zweigen zu vermeiden. Rebasing sollte so früh wie möglich durchgeführt werden, um Probleme wie diese zu vermeiden. In meinem einfachen Fall hier, kann ich fusionieren Master und den anderen Zweig, aber die Commits nicht fusionieren, dann muss ich in Master rebase und neu anordnen und die Festschreibungen zerquetschen, wie folgt aus:
pick 7cd915f Commit with missing file.
fixup 8de731b Commit with missing file. #This was the higher of the two entries
pick 8b92c5a Commit with too many files.
fixup bbef925 Commit with too many files. #This was the higher of the two entries
pick 94c3f7f More history.
fixup 52490ce More history. #This was the higher of the two entries
Spät edit: Ich habe gerade bemerkt, dass ich versehentlich die Commit-Geschichte als eine Übertragung von meiner ursprünglichen Antwort neu geordnet habe. Wenn Sie die Zeilen in der Rebase austauschen, ändert sich die Reihenfolge, die Sie festlegen. Nach der Bearbeitung können Sie erneut eine Rebase durchführen und sie zurückstellen, um zur ursprünglichen Commit-Reihenfolge zurückzukehren.
Beachten Sie, dass das Ändern eines früheren Commits den Verlauf neu schreibt und Sie seit dem Commit völlig neue Hashes erhalten.Tun Sie das nicht, wenn das Commit bereits veröffentlicht wurde. – aragaer
@aragaer Ich habe absichtlich festgelegt, dass ich die _LOCAL_ Geschichte neu schreibe. – Val