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 行の長さなので、相対的に言えばそれほどかけ離れたものではありませんが、それでも奇妙です。
なぜこれが起こっているのか、それについて何ができるのか考えていますか? これは頻繁に使用されるファイルであるため、常にマージされます。開発の最後の年かそこらで問題になったことは一度もないので、何が変わったのかはわかりませんが、それに対処することは素晴らしいことです.