0

gitブランチをマージしているときに何が起こっているのかを理解しようとしています. メインブランチ(develop)から分岐した(feature_1)ブランチがあります。マージを行います

git merge develop

そして、予想される競合が発生します

CONFLICT (add/add): Merge conflict in res/values/dimens.xml
Automatic merge failed; fix conflicts and then commit the result.

そのファイルのステータスは次のとおりです。

$ git diff res/values/dimens.xml
diff --cc res/values/dimens.xml
index ec31f04,554d1e7..0000000
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@@ -1,5 -1,4 +1,11 @@@
++<<<<<<< HEAD
 +<resources>
 +    <dimen name="left_nav_side">120dip</dimen>
 +    <dimen name="left_nav_vertical_margin">30dip</dimen>
 +    <dimen name="third_left_nav_vertical_margin">10dip</dimen>
++=======
+ <?xml version="1.0" encoding="utf-8"?>
+ <resources>
+     <dimen name="round_corner">4dp</dimen>
++>>>>>>> develop
  </resources>

このファイルには 2 種類の "差分" があるようです。プラス/マイナスの差分と "HEAD" の矢印の差分です。meld のようなマージ ツールで開くと、正しくないと思われるものが表示されます。 メルドのスクリーンショット

ご覧のとおり、作業ツリーの変更は差分として表示され、マーカーがファイルの一部として表示されますが、これはすべきではないと思います。IntelliJの「競合を解決する」ツールでも同様の結果が得られます。誰かが私が間違ったことや欠けていることを教えてもらえますか? それとも、ファイルで何が起こっているのか教えていただけますか?

4

2 に答える 2

0

ファイル自体には競合マーカーが含まれています。次のようになります。

<<<<<<< HEAD
<resources>
    <dimen name="left_nav_side">120dip</dimen>
    <dimen name="left_nav_vertical_margin">30dip</dimen>
    <dimen name="third_left_nav_vertical_margin">10dip</dimen>
=======
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="round_corner">4dp</dimen>
>>>>>>> develop
</resources>

問題を修正する機会を与えるためにコミット間でマージが停止したためdiff、ファイルを表示すると、ファイルと最後のコミットの間の変更が表示され、そのコミットのすべての新しいものと競合マーカーが表示されますそのgitがファイルに追加されました

実際にやりたいことは、ファイルを編集し、競合を解決し、マーカーを削除してgit add res/values/dimens.xml; git commitから、競合したコミットを修正することです

于 2012-03-27T01:18:21.587 に答える
0

競合マーカーは常にファイルの一部であり、そのままでは正しいものです。マーカーは git だけで使用されるわけではありません。たとえば、netbeans もマーカーを使用します。マーカーを使用すると、外部プログラムはマージの問題とその解決方法を認識します。

于 2012-03-27T12:51:15.697 に答える