2012-04-18 9 views
3

Git(SubversionとBazaarの新機能)には新機能です。ブランチをマージするときに変更が上書きされないようにするにはどうすればいいですか?

私はブランチで作業してコミットなされてきたが、それ以来、主人は私が主人に私のブランチをマージするとき、いくつかのコミットは、場所を取る持っていた、私はいくつかの奇妙な出来事見つける:

  • 私のコミットとマスターのコミットでは、同じパスで新しいファイルを作成しました。競合の警告なしに、マスターファイルをファイルで完全に上書きすることにしました。
  • 既存のファイルが両方のブランチで修正されていると競合の警告が表示され、インラインコメントはの一部がに追加されますが、他の部分では実際には警告なしで上書きされます。

私はGitがこれらの競合で厳しいことを言うことはできますか?私は警告なしでファイルを上書きしたくないので、ファイルを検査するためにファイルにコメントするつもりならば、それは完全差異の絶対的なコメントを提供したいと思う。

ない場合は、私は自分自身の両方で変更されたファイルを決定することを余儀なくされ、その後、それらを手動でマージしています。

+0

これはhttp://superuser.comにとってより適切なようです。プログラミングの側面であり、プログラミングに関する質問ではないからです。 – Phrogz

+1

@Phrogz:そうかもしれない。スタック・エクスチェンジでは、より明確なガイドラインが必要だと思います。私がスーパーユーザーまたはスタックオーバーフローを訪れるたびに、私は*正確に*それが何であるか分からないので、私は約ページをチェックします。 – melkamo

+2

よくある質問では、「プログラマーがよく使うソフトウェアツール」がここでは話題になっています。 –

答えて

2

私はあなたの最初のシナリオをしようとすると、私は次のような出力が得られます。

Auto-merging conflicted 
CONFLICT (add/add): Merge conflict in <filename> 

はあなたの2番目のシナリオには2つのバージョン間で異なる行に競合を生成しませんが、1つのバージョンのみに変更された行は、かもう片方。これは予想される動作です。

Gitは、他のほとんどのVCSよりもこれらの種類の競合を実際に処理します。問題を引き起こしているプロセスについて他にも何かがあります。たぶんあなたはまれな設定をしているかもしれません。コマンドの1つで使用しているフラグの意味を誤解している可能性があります。おそらく、あなたや同僚の作業ディレクトリで実際にコミットされていないファイルがあるかもしれません。多分あなたはあなたが思っていたものとは異なる支店にいるかもしれません。正確で再現性のある一連のコマンドを期待どおりに実行することができない場合は、そこから手を差し伸べることができます。

+0

ありがとう、ちょうど一緒にテストケースを入れよう! – melkamo

関連する問題