私はgitのリモートブランチで作業しています。作業を行う前に、ToT を取得するために git pull を実行します。git ログを見ると、「ssh://myserver:1111/mybranch のブランチ 'master' をマージします」というメッセージを含むマージ コミットが自動的に作成されることがわかります。次に、作業を行い、変更をコミットします。その後、私は自分の変更を押し上げます。私たちのシステムは、コード レビュー用に gerrit でセットアップされています。私の新しい変更は、マージコミットに依存して gerrit に表示されます。どうすればこれを取り除くことができますか?
2 に答える
プルする前にブランチがリモート ブランチと相違していたため、マージが早送りされていない可能性があります。つまり、変更をプッシュしたときに、おそらく gerrit のリビジョン用に複数の変更が作成されたのではないでしょうか?
gerrit を使用する場合の最善の方法は、新しい変更をコミットしてプッシュする前に、リモート ブランチのクリーン チェックアウトを行うことです。この場合、変更には依存関係がありません。私は通常、新機能または修正ごとに新しいブランチをチェックアウトします。それらが検証され、gerrit のマスター リポジトリにマージされるまでプッシュして保持する必要があります (リビジョンの結果として何かを変更し、新しいパッチセットを作成する必要がある場合に備えて)同じ変更の場合)。
ただし、依存関係は、同時に複数のコミットをプッシュし、最後のコミットが前のコミットを必要とする場合に役立ちます。たとえば、クリーン ブランチに 2 つのコミットを追加し、それらをプッシュした場合、それらは依存関係を持つ 2 つの変更として gerrit に表示されます。最新と前のコミット、および最新のコミットは、依存関係の前にマスター リポジトリにマージされることはありません。
git pull実際にはgit fetch、git mergeローカル ブランチがリモート トラッキングの場合。したがって、リモート ブランチが早送り可能でない場合、git pull はマージ コミットを作成します。マージコミットを避けるには
'git fetch'
'git rebase -p'
'git pull --rebase'
または、git config で
merge.ffwith 値を設定します。only
または
ローカル ブランチからのリモート トラッキング設定を無効にする
git config --unset branch.<branch>.merge