2

git のマージ機能で、これまで見たことのない奇妙な問題が発生しています。ブランチからいくつかの変更をマージしていますがmaster、git は特定の 1 つのファイルで一貫して問題を抱えているようです。

これは基本的に、一見ランダムな場所にコンテンツをマージすることです。このファイルがマージされたのは、過去数回です。

MyFile.cs他のブランチ ( と呼ばれるsomebranch)に加えた変更は次のとおりです。

-                service.UpdateUser(user);
+                service.UpdateUser(user, false);
...
-                User[] users = client.ImportPersonnel(a, b, c);
+                UserImportResults results = client.ImportPersonnel(a, b, c);
...
-                Response.Write(JsonConvert.SerializeObject(new { UserCount = users.Length }));
+                Response.Write(JsonConvert.SerializeObject(new { Added = results.NumAdded, Updated = results.NumUpdated }));

ほんの数行のコードです。

それで、私はこれをしました:

git merge somebranch master

そのほとんどは、競合することなくマージされます。いくつかのファイルには競合がありますが、意味があります。しかし、それが行った自動マージの変更MyFile.csは奇妙です。たとえば、次の行

service.UpdateUser(user, false);

masterのバージョンの途中でランダムな場所にスタックしていましたMyFile.cs:

                if (Request["X"] != null)
                {
                    CalculateSomething(Request["X"]);
                }

<<<<<<< HEAD
                if (Request["Y"] != null)
                {
                    CalculateSomething(Request["Y"]);
                }
=======
            try
            {
                client.UpdateUser(user, false);
>>>>>>> qaqc-release

                if (Request["Z"] != null)
                {
                    CalculateSomething(Request["Z"]);
                }

git が 2 つのファイルをマージする方法をどのように決定するかはわかりませんが、以前にこれを行うのを見たことがありません。そして、それはこの1つのファイルでのみ発生します。

変更をマージする場所と実際に変更をマージしている場所は、100 行強離れています。ただし、このファイルはほぼ 5000 行の長さなので、相対的に言えばそれほどかけ離れたものではありませんが、それでも奇妙です。

なぜこれが起こっているのか、それについて何ができるのか考えていますか? これは頻繁に使用されるファイルであるため、常にマージされます。開発の最後の年かそこらで問題になったことは一度もないので、何が変わったのかはわかりませんが、それに対処することは素晴らしいことです.

4

1 に答える 1