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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top