In der letzten Stunde habe ich Dateien geändert
A
ATest
B
BTest
Um sicherzustellen, dass meine Festschreibungsnachrichten mit der tatsächlichen Änderung übereinstimmen, werden sie A
mit einer Beschreibung festgeschrieben . Leider habe ich nicht ATest
in dieses Commit aufgenommen.
Inzwischen sind noch nicht verpflichtet B
und BTest
.
Wie gehe ich an dieser Stelle am besten vor? Ich möchte entweder:
- Zurücksetzen des vorherigen Commits ohne Auswirkungen auf meine derzeit nicht festgeschriebenen Dateien?
- Eine weitere Datei unter derselben Beschreibung zum vorherigen Commit hinzufügen?
Antworten:
So fügen Sie dem vorherigen Commit eine neue Datei hinzu:
Sie können verwenden,
git commit --amend --no-edit
wenn Sie die Festschreibungsnachricht nicht ändern möchten.quelle
git rebase -i
die Commits neu zu ordnen und zusammenzuführen das Festschreiben der neuen Datei mit dem anderen Festschreiben. Das könnte für eine separate Frage wesentlich sein.git rebase -i
was @DavidZ vorschlägt, müssen Sie das neue Commit nur bis knapp unter dasjenige verschieben, mit dem Sie es kombinieren möchten, und das Wort des neuen Commits insquash
anstelle vonpick
git reset
), stellen Sie dann die Datei bereit , die Sie hinzufügen möchten, ändern Sie das Commit und stellen Sie dann alle Dateien erneut bereit .Hier ist ein amüsantes Flussdiagramm 1, das auch überraschend praktisch ist: Es gibt die richtige Empfehlung sowohl für die ursprüngliche Frage als auch für das geänderte "Was wäre, wenn es nicht das letzte Commit wäre?" Frage.
1 Entnommen aus http://justinhileman.info/article/git-pretty/
quelle
Fügen Sie einem vorherigen Commit eine Datei hinzu
Wenn Sie den Zweig, an dem Sie arbeiten, bereits verschoben haben, lesen Sie bitte zuerst die Manpages . Bitte beachten Sie insbesondere:
Wenn Sie Ihren Zweig jedoch nicht geschoben haben, bereiten Sie sich darauf vor, die Gefahrenzone zu betreten .
Suchen Sie den Commit-Hash
Zunächst müssen Sie den Commit-Hash des Commits kennen, zu dem Sie hinzufügen möchten. Dies wird durch gezeigt
git log
. Sie wollen eigentlich die commit angeben vor dem einen zu dem Sie hinzufügen möchten. (Sie können sich das als Startindex für das Commit-Segment vorstellen, das Sie ändern möchten.) Sie können sicherstellen, dass Sie das richtige Commit haben, indem Sie es ausführengit log -1 HEAD~n
. Wobei 'n' eine Ganzzahl ist, die Sie erhöhen, bis Sie das richtige Commit haben. Oder du könntest zählen, nein wirklich.Aber wenn Sie zählen, bestätigen Sie zumindest, dass Sie das richtige Commit haben
git log -1 HEAD~5
oder was auch immer Ihre Zählung war. Sie sollten das Commit, zu dem Sie hinzufügen möchten, NICHT sehen.GEFAHR , heh
Jetzt können Sie loslegen
git rebase -i HEAD~5
. Oder was auch immer Ihr Commit-Hash ist. Dadurch wird Ihr bevorzugter Texteditor und eine zu bearbeitende Datei angezeigt. Die Datei ist die Aufgabenliste für den Befehl rebase. Die Kommentare in der Datei geben an, welche Optionen Sie haben. Suchen Sie einfach die Zeile mit dem Commit, zu dem Sie hinzufügen möchten, und ändern Sie in dieser Zeile "Auswählen" in "Bearbeiten". Speichern und schließen Sie nun die Datei.Die Rebase wird beendet, sobald das Commit erreicht ist, das Sie bearbeiten sollen. Führen Sie a aus
git status
, um die zusätzlichen Informationen anzuzeigen. Stellen Sie Ihre Dateien so bereit, dass sie dem Commit mitgit add .
oder wie auch immer die Dateinamen hinzugefügt werden.Dann tu es
git commit --amend
. Dadurch wird das Commit geändert, das Sie bearbeiten möchten.Zum Schluss laufen
git rebase --continue
.Im Zweifelsfall können Sie unter Linux mehr herausfinden, indem Sie die von
man git-rebase
oder ausgegebenen Dokumente lesengit --help rebase
.quelle
git log
Sie einfach , um Ihr Commit zu finden und seinen Hash zu kopieren, und verwenden Sie dann , um das vor Ihnen festgelegte Commit neugit rebase -i hash^
zu erstellen.