2017-10-19 18 views
1

我有合併衝突,我不知道如何處理,這裏是場景。Git-刪除文件進入合併的方式?

我有AlphaGamma

阿爾法是這樣的,因爲Thing.js被刪除

Folder 
|___Thing.html 
|___Thing.css 

和β看起來像這樣

伽瑪看起來是這樣的,因爲Thing.html和Thing.css被刪除

Folder 
    |___Thing.js 

我想像合併成伽瑪會給我這個:

Folder 
    |___Thing.html 
    |___Thing.css 
    |___Thing.js 

相反,它似乎刪除Thing.js並更新Thing.html和Thing.css。

我一直在Google上搜索半小時,試圖弄清楚爲什麼會發生這種情況,以及如何解決這個問題,然後我就空了。有沒有人有過類似的經歷,如果有的話,你怎麼修復它?爲什麼會發生?

+0

他們是真正的接近,但伽馬最近已更新。他們相隔約一個小時左右 – Callat

+1

你在問題中提到你有合併衝突。當你從gamma運行git merge alpha時,它會提示你處理衝突嗎? – Thomas5631

+0

是的。但我不知道該怎麼做才能得到我想要的文件。或者我需要遵循什麼流程。 – Callat

回答

1

黑客是做合併如何得到的分支。然後從之前的提交中獲取所需的文件。複製/修改/刪除文件以獲取您想要的情況(如有必要,請添加)並重新提交。

爲什麼這樣的行爲?

.js文件在Alpha中被刪除,並且在稍後的提交中沒有修改,所以應該刪除它。 其他兩個文件在測試版中被刪除。你寫的,他們是更新在gamma?我假設一個平行於beta的修改導致合併衝突(也許是alpha中的換行符?)。由於兩個平行和不兼容的修改。

1

我想你會想象伽瑪看起來會有某種特定的方式,因爲你將合併視爲合併內容。但是,這不是事實。合併結合了更改。

刪除文件是一種變化。在分支上,如果您刪除了一個文件並提交了該更改,則說明您要「執行爲此分支創建的功能,我需要刪除此文件」。它幾乎總是這樣的情況下,你將合併到這個「其他方」刪除該文件;因此,爲了讓您的案例能夠按照您的設想進行處理,幾乎所有刪除文件的嘗試都將在下次合併時撤銷。大多數用戶會發現,相當令人沮喪。

所以相反,你做合併和git說:「好吧,在這方面完成工作thing.js不得不被刪除;但在這方面完成工作thing.js不得不被修改。我不會猜測如何分類,因此合併的用戶必須告訴我。「這是一個衝突。

越來越多的我看到的工作流程裏的人想使一個分支,然後從該分支刪除所有,他們不打算在該分支上工作的文件。以上是這些工作流程100%錯誤的原因。如果你必須有稀疏的工作樹,你可以使用稀疏結帳;但如果您提交文件的刪除,那麼您將在合併中獲得不需要的結果。

在合併的「另一側」修改了文件的情況下,您相當幸運,因爲您會遇到衝突,並且您可以通過從未刪除該分支的分支中獲取版本來解決衝突文件。如果沒有衝突,文件將被默認刪除。