私のローカルGITリポジトリには、次のコミットがあります。
A-> B-> C-> D
(ここでDは頭です)
BとCを1つのコミットに結合/押しつぶしたいと思います。どうすればそれができますか?
ありがとう。
私のローカルGITリポジトリには、次のコミットがあります。
A-> B-> C-> D
(ここでDは頭です)
BとCを1つのコミットに結合/押しつぶしたいと思います。どうすればそれができますか?
ありがとう。
次のコマンドを使用します。
git rebase -i A ;# where A is A's commit hash
インタラクティブエディタで、行を変更します。次のようになります。
pick c7787af A
pick f9d9262 B
pick 6c363d0 C
pick 40f657d D
これに:
pick c7787af A
pick f9d9262 B
squash 6c363d0 C
pick 40f657d D
Cのコミットメッセージを破棄したいが、それでもコミットを潰したい場合は、次を使用します。
pick c7787af A
pick f9d9262 B
fixup 6c363d0 C
pick 40f657d D
共同編集者とすでに共有しているブランチをリベースしないでください。このアクションにより、SHA1ハッシュが変更され、早送りされない更新が発生します。
Jasonがコメントで述べたように、代替構文はgit rebase -i HEAD~4
です。最近の履歴をリベースしてコミットを押しつぶす場合(つまり、親を過去にさかのぼって数えるのが簡単な場合)、これにより、A
のハッシュを検索する手間が省けます。