Gitで古いコミットを修正するとどうなりますか?
-
02-10-2019 - |
質問
古いコミットをチェックアウトし、いくつかの変更を行い、使用してコミットした場合、私は何が起こるか本当にわかりません 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
.
所属していません StackOverflow