5

説明に記載されているとおりです。マージの競合が自動的に解決されたときに、それらを解決するように求められることさえしたくありません。

私のシナリオでは、固定テキスト文字列を含む行をあるブランチのテキスト ファイルに追加し、同じブランチで他のコミットを行い、別のブランチで固定テキストを追加する変更をチェリー ピックしてから、マージを行います。もう一方のブランチ。

日常的に競合が発生することが多いため、これをテストとして行っていますが、マージツールを使用すると競合はないと表示されるため、閉じて手動でコミットします。

問題は、実際には git が既に変更を正しくマージしているのに、追加の手順を求められることです。(ファイルを手動でチェックして、解決を行っているのがマージツールではないことを確認しました。実際、競合はファイル内で既に解決されています)。

「--commit」パラメーターを使用して git merge を試みましたが、効果がありません。

メッセージに従って変更を自動的にマージするのに git が失敗したように見えますが、実際にはファイルを正しくマージしました。

この種の競合を自動マージして、手動の介入なしで続行する方法はありますか?

私はgitバージョン1.7.10.msysgit.1を使用しています

4

1 に答える 1

1

これはあなたの質問に答えないかもしれませんが、何をマージしようとしているのかを知っていれば、戦略 (およびオプション) を与えることで、何をマージしようとしているかに応じて、競合をまったく解決する必要がないようにすることができます。通常、非早送りマージは再帰戦略によって行われますが、これは良いことですが、オプションを与えることもできます。

を使用してマージする場合

$ git merge branchB --strategy=recursive -Xours

その後、通常であればすべての競合が、代わりに行で自動的に解決されます。これは、競合が発生してはならないことがわかっているが、とにかく競合が発生している場合に、おそらくあなたの状況でうまくいくでしょう。私が言ったように、これはあなたのバージョンとの競合を自動的に解決するので、あなたのバージョンが必要なものであることが事前にわかっている場合にのみ使用してください.

空白に関連する競合を自動的に修正する、より安全なオプションはignore-all-space. そう:

$ git merge branchB --strategy=recursive -Xignore-all-space

これをお勧めします。これは非常に安全であり、ケースに役立つ可能性があり、マージされるファイルの内容全体がローカルとリモートに分割され、競合の解決が非常に困難になる多くのケースを回避できるからです。

于 2012-06-29T07:47:33.620 に答える