2

私は Git を初めて使用します (Subversion と Bazaar から来ました)。

ブランチで作業してコミットを行い、それ以降、マスターでいくつかのコミットが行われている場合、ブランチをマスターにマージすると、いくつかの奇妙な出来事が見つかります。

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

これらの競合をより厳密にするように Git に指示できますか? 警告なしにファイルを上書きすることは望ましくありません。検査のためにファイルにコメントを付ける場合は、完全な違いの絶対的なコメントを提供することをお勧めします。

そうでない場合は、自分自身によって変更されたファイルを特定し、それらを手動でマージする必要があります。

4

1 に答える 1

2

最初のシナリオを試すと、次の出力が得られます。

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

2 番目のシナリオでは、2 つのバージョン間で異なる行で競合が発生しますが、いずれかのバージョンでのみ変更された行では競合が発生します。これは予期される動作です。

実際、Git はこの種の競合を他のほとんどの VCS よりも適切に処理します。問題を引き起こしているプロセスに関する何か他のものがあります。まれな構成設定がある可能性があります。コマンドの 1 つで使用しているフラグの意味を誤解している可能性があります。あなたや同僚の作業ディレクトリに実際にはコミットされていないファイルがあるかもしれません。たぶん、あなたは思っていたよりも別のブランチにいます。期待どおりに動作しないコマンドの正確で再現可能なシーケンスを見つけてください。そこから支援を試みることができます。

于 2012-04-18T20:44:48.413 に答える