2013-03-14 11 views
7

を組み合わせて、私は次のような状況を持つ「gitの--interactiveリベース」Gitはリベース:今では非以降のコミット

使用してコミットメッセージをコミットを組み合わせて変更する方法良い方法があることを知っている:

$ git rebase --interactive HEAD^^^^ 
pick 5b7c140 commitA 
pick 40ffd7c commitB 
pick 5e7647d commitC 
pick 78bea2d commitD 

Rebase [...] 

も、次の要件を処理する可能性がある:

は新しいコミットCACとCBDにcommitAとcommitCとcommitBとcommitDを組み合わせますか?

答えて

12

ことが可能です - あなたはまた、対話型リベースとコミットの順番を並べ替えることができます。

pick 5b7c140 commitA 
squash 5e7647d commitC 
pick 40ffd7c commitB 
squash 78bea2d commitD 

または

pick 5b7c140 commitA 
fixup 5e7647d commitC 
pick 40ffd7c commitB 
fixup 78bea2d commitD 

2つの違いは、squashはあなたがコミット編集することができますということです新しいコミットのためのメッセージを返します。一方、fixupは、2番目のコミットメッセージをスローして、先にpickコミットメッセージを残しておきます。 (もしあなたのエディタがすぐに起動すれば、ちょうどsquashを選択するという習慣を持っていると、コミットメッセージを確認するよい機会が与えられます。

commitBcommitCがファイルの同じ部分を変更すると、リベースの競合が発生する可能性があります。多くの場合、これらは簡単に十分に整理できます。

+1

私の場合:これらのコミットに関するファイルはありません。 Gitはちょうど素晴らしいです、私はコミット命令を保持する必要があると思った。どうもありがとう! :) –

+1

@John - 'git rebase -i'は非常に強力なツールです! – FooF

関連する問題