0

私はgitのリモートブランチで作業しています。作業を行う前に、ToT を取得するために git pull を実行します。git ログを見ると、「ssh://myserver:1111/mybranch のブランチ 'master' をマージします」というメッセージを含むマージ コミットが自動的に作成されることがわかります。次に、作業を行い、変更をコミットします。その後、私は自分の変更を押し上げます。私たちのシステムは、コード レビュー用に gerrit でセットアップされています。私の新しい変更は、マージコミットに依存して gerrit に表示されます。どうすればこれを取り除くことができますか?

4

2 に答える 2

1

プルする前にブランチがリモート ブランチと相違していたため、マージが早送りされていない可能性があります。つまり、変更をプッシュしたときに、おそらく gerrit のリビジョン用に複数の変更が作成されたのではないでしょうか?

gerrit を使用する場合の最善の方法は、新しい変更をコミットしてプッシュする前に、リモート ブランチのクリーン チェックアウトを行うことです。この場合、変更には依存関係がありません。私は通常、新機能または修正ごとに新しいブランチをチェックアウトします。それらが検証され、gerrit のマスター リポジトリにマージされるまでプッシュして保持する必要があります (リビジョンの結果として何かを変更し、新しいパッチセットを作成する必要がある場合に備えて)同じ変更の場合)。

ただし、依存関係は、同時に複数のコミットをプッシュし、最後のコミットが前のコミットを必要とする場合に役立ちます。たとえば、クリーン ブランチに 2 つのコミットを追加し、それらをプッシュした場合、それらは依存関係を持つ 2 つの変更として gerrit に表示されます。最新と前のコミット、および最新のコミットは、依存関係の前にマスター リポジトリにマージされることはありません。

于 2011-09-09T21:29:35.120 に答える
1

git pull実際にはgit fetchgit mergeローカル ブランチがリモート トラッキングの場合。したがって、リモート ブランチが早送り可能でない場合、git pull はマージ コミットを作成します。マージコミットを避けるには

'git fetch'
'git rebase -p'
'git pull --rebase' 

または、git config でmerge.ffwith 値を設定します。only

または

ローカル ブランチからのリモート トラッキング設定を無効にする git config --unset branch.<branch>.merge

于 2013-11-11T22:23:55.117 に答える