次のようなコミット履歴があります:
HEAD
HEAD~
HEAD~2
HEAD~3
git commit --amend
現在のHEAD
コミットを変更します。しかし、どのように変更するのでしょうかHEAD~3
?
ベストアンサー1
使用git rebase
たとえば、 commit を変更するにはbbc643cd
、次のコマンドを実行します。
git rebase --interactive bbc643cd~
~
コマンドの末尾のチルダに注意してください。これは、 の以前のコミットの上にコミットを再適用する必要があるためですbbc643cd
(つまりbbc643cd~
)。
デフォルトのエディターで、の行pick
を に変更します。edit
bbc643cd
ファイルを保存して終了します。git はファイル内のコマンドを解釈して自動的に実行します。commit を作成したばかりの以前の状況に戻りますbbc643cd
。
この時点で、bbc643cd
最後のコミットとなり、簡単に修正できる変更を加えたら、次のコマンドでコミットします。
git commit --all --amend --no-edit
その後、次のコマンドを使用して、前の HEAD コミットに戻ります。
git rebase --continue
警告: これにより、そのコミットとすべての子コミットの SHA-1 が変更されることに注意してください。つまり、これにより、その時点以降の履歴が書き換えられます。これを行うとリポジトリが壊れることがありますコマンドを使用してプッシュする場合git push --force
。