2011-09-09 11 views
0

私はgitのリモートブランチで作業しています。どんな仕事をする前に、私はToTを得るためにgit pullを行います。 gitログを見ると、これは自動的に "ssh:// myserver:1111/mybranch"のマージブランチ 'master'を使ってマージコミットを作成することがわかります。それから、私は自分の仕事をして、私の変化をコミットします。その後、私は私の変更をプッシュします。私たちのシステムは、コードレビューのためにgerritでセットアップされています。私の新しい変更は、マージコミットへの依存とgerritで表示されます。どのように私はこれを取り除くのですか?gitリモートマージコミットがgerritで偽の依存関係を引き起こしました

答えて

1

あなたの支店が引っ張る前にリモートの支店との違いがあったため、マージが早送りされていない可能性があります。だから、あなたがあなたの変更をプッシュしたとき、それはおそらくゲリットの改訂のために複数のチャネージを作成していたでしょうか?

gerritを使った作業の最善の方法は、新しい変更をコミットしてプッシュする前にリモートブランチのクリーンチェックを行うことです。この場合、変更には依存性がありません。私は通常、新しい機能や修正のために新しいブランチをチェックアウトします。それらが確認され、ゲリットのマスターレポにマージされるまで、それらを押し続けて保持する必要があります(リビジョンの結果として何かを変更し、同じ変更の場合)。

しかし、依存関係は同時に複数のコミットをプッシュし、最後のコミットが以前のコミットをリクレイする場合に便利です。クリーンブランチに2つのコミットを追加してプッシュした場合、2つのgerritとして表示されます最新のものと前のものとの間の依存関係が変化し、最新のものは従属する前にマスターリポジトリにマージされることはない。

1

git pullローカルブランチがリモートトラッキングの場合は、実際にはgit fetchgit mergeです。リモートブランチが高速フォワード可能でない場合、git pullはマージコミットを作成します。マージを避けるために

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

を使用するかのgit configに値onlymerge.ffを設定してコミットします。

それとも

ローカルブランチからgit config --unset branch.<branch>.merge

を遠隔追跡の設定を無効にします
関連する問題