3

基本的に私は機能に取り組んできましたが、コード レビューのために機能をメイン リポジトリに戻すと、機能全体が 1 つのコミットとしてプッシュされることを望んでいます。私は通常git rebase -iこれを使用し、最初のコミットをスカッシュに、最初の編集を除いてすべてを設定します。次に、競合が発生するたびに最新のファイルを貼り付けます。

競合中にさまざまなファイルを貼り付ける必要はありません。基本的にはより簡単なコマンドで、最新のファイルを保持し、それらがどのようになったかの履歴を削除できるようにしたいと考えています。

編集:

この bash スクリプトに相当する Git コマンドを探しています。

for file in `git diff --name-only master foo`
git checkout foo $file
4

2 に答える 2

12

押しつぶされたマージを使用する

あなたが望むのは、押しつぶされたマージです。これにより、すべての変更が作業ツリーにマージされますが、実際のコミットを行うのはあなた次第です。例えば:

git checkout foo
git rebase -i master
git checkout master
git merge --squash foo
git commit -m 'Squashed commit.'

リベースされたブランチからのすべての変更は、単一のコミット メッセージで単一のコミットとして行われます。fooブランチでリベースとの競合を解決している限り、master にマージするときにマージで競合が発生することはありません。

于 2012-07-17T19:20:56.173 に答える