私はファイルを編集して次のことを行いました。
git add file.py
git commit -m 'fixed bug'
次に、別のファイルを編集して、マイナーなバグ修正を実行しました。 「バグ修正」を示す2つのコミットを次々に実行したくありません。 「バグ修正」で1つのコミットが必要です。
最後の追加/コミットを元に戻し、最初のコミットメッセージを変更するにはどうすればよいですか?
git reset
、git revert
、git undo
コマンドを見ていましたが、推測でリポジトリを台無しにしたくありません
編集:それを行う方法を見つけました: http://www.gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html
2番目の変更を既にコミットしている場合は、最初にリセットします。
git reset HEAD^
これで、HEAD
が最初のコミットになり、ローカルファイルの内容は変更されません。
git add <the file(s) for the second bug fix>
git commit --amend -m'bug fixes'
追跡および変更されたすべてのファイルを2番目のバグ修正に含める場合は、通常どおり、代わりにこれを実行できます。
git commit -a --amend
コミットの修正はまさにこれです:
git add
または-a
が必要です)ただし、注意してください。最初のコミットを配布した場合、他の人のリポジトリは奇妙になります。他の誰かがフェッチしたコミットを変更しないでください。
おそらくgit merge --squash
を使用することもできます。これは、より論理的に感じられますが、必ずしも簡単ではありません。これを使用して、2つのコミットを含むブランチを前のコミットにマージします。
押しつぶしはgit rebase
でも機能します。