質問

古いコミットをチェックアウトし、いくつかの変更を行い、使用してコミットした場合、私は何が起こるか本当にわかりません git commit --amend.

その変化は将来のコミットに自動的に伝播しますか?どのように機能しますか?

役に立ちましたか?

解決

Gitでは、コミットは単なるオブジェクトです。あなたがいつ git commit --amend, 、あなたは同じ親との新しいコミットを作成しているだけです。最初は次のようになります:

                  {HEAD}
                  {master}
---[A]---[B]---[C]

今、あなたは修正します C, 、新しいコミットを作成します D:

                  {HEAD}
                  {master}
---[A]---[B]---[D]
            \
             \
              [C]

老人 C 今のところまだそこにいます。ただし、ブランチはもはや参照されていないため、次にゴミコレクションが発生すると、一掃されます。

他のヒント

ジョンの答えを補完するために、あなたが古いコミットを修正すると、その子供たちは何も起こりません。

       old commit
            v
o--o--o--o--o--o--o--o--o < original branch tip
          \
           o  < ammended old commit & new branch tip

たぶんあなたがしたいことは スカッシュがコミットするインタラクティブなリベース.

古いコミットと同じ親で新しいコミットが作成され、現在のブランチは新しいコミットを指します。古いコミットはまだオブジェクトデータベースにあり、で見つけることができます git reflog.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top