Was passiert, wenn ein alte begehen mit git zur Änderung?
-
02-10-2019 - |
Frage
Ich weiß nicht wirklich verstehen, was passiert, wenn ich eine alte begehen Check-out, haben einige Modifikationen und begehen git commit --amend
verwenden.
Wird diese Änderung auf dem zukünftigen Commits automatisch propagieren? Wie funktioniert es?
Lösung
In git sind Commits nur Objekte. Wenn Sie git commit --amend
, sind zu schaffen Sie nur eine neue mit dem gleichen Eltern begehen. Zunächst dass sieht wie folgt aus:
{HEAD}
{master}
---[A]---[B]---[C]
Jetzt C
Sie ändern, die Schaffung eines neuen begehen D
:
{HEAD}
{master}
---[A]---[B]---[D]
\
\
[C]
Die alte C
gibt es noch für den Moment. Es ist jedoch nicht mehr von jeder Filiale verwiesen, so das nächste Mal, wenn eine Garbage Collection stattfindet, es wird zu weggefegt.
Andere Tipps
Um John Antwort zu ergänzen, wenn Sie eine alte ammend begehen, nichts seine Kinder geschieht.
old commit
v
o--o--o--o--o--o--o--o--o < original branch tip
\
o < ammended old commit & new branch tip
Vielleicht, was Sie tun möchten, können mit einem interaktive rebase dass squashes Commits .
Ein neue Festschreibung wird mit den gleichen Eltern wie die alten begehen erstellt, und Ihr aktueller Zweig bezieht sich nun auf den neuen zu begehen. Die alte begehen ist nach wie vor in der Objektdatenbank und kann mit git reflog
gefunden werden.