我有一個奇怪的問題,我從來沒有見過git的合併功能。我正在將一個分支的一些更改合併到master
,並且git似乎一直在遇到一個特定文件的問題。Git不斷地合併一個文件不正確
它基本上將內容合併到看似隨機的地方。這是最近幾次這個文件被合併的情況。
下面是我對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
大部分是沒有衝突合併。一些文件確實有衝突,但它們是有道理的。但automerge將其更改爲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是如何確定如何將兩個文件合併在一起,但我從來沒有見過它這樣做過。它只發生在這個文件中。
它應該合併變化的地方和它實際上正在做它的地方相距超過100線。然而,這個文件長度差不多有5000行,所以相對來說它並不是太遙遠,但仍然很奇怪。
任何想法,爲什麼發生這種情況或我能做些什麼?這是一個經常被觸及的文件,因此它會不斷合併。在去年左右的發展中,這不是一個問題,所以我不確定發生了什麼變化,但解決這個問題會很好。
您可以考慮'git'的行爲提示5000行源文件不可維護。 –