4

私のローカルGITリポジトリには、次のコミットがあります。

A-> B-> C-> D

(ここでDは頭です)

BとCを1つのコミットに結合/押しつぶしたいと思います。どうすればそれができますか?

ありがとう。

4

1 に答える 1

8

次のコマンドを使用します。

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のハッシュを検索する手間が省けます。

于 2012-08-21T14:53:01.440 に答える