2013-04-05 161 views
1

在分支A上,我有兩個'故事',一個是我想要承認的,一個是我沒有承諾的。Git合併 - 不提交跟蹤文件

由於這些更改不在功能分支上,所以我需要將兩者分開。我用

git merge --no-commit --no-ff A 

而在主人。這給了我一個臨時區域來調整預期,並且我

git reset file 

就有關不需要這些文件提交。這種方法不正確嗎?結果出乎意料。沒有添加文件(根據需要),但他們的記錄是。 Git將他們追蹤爲已刪除的文件!現在,當從主機合併回A時,它會嘗試刪除未提交的作品。它非常奇怪,因爲主從沒有這些文件。這是非常不方便的,任何人都可以建議我如何去「同步」這些更改?或者可能是更好的方法,爲什麼會 - 不提交呢?

回答

1

我覺得最乾淨的方法是從A和master的mergebase中創建兩個分支story1story2。然後分開A提交櫻桃採摘和編輯/隨地吐痰提交。所以你分別爲每個故事分兩個新的分支。然後你可以很容易地合併。

+0

一個很好的方法,但我希望避免櫻桃採摘的開銷,這就是爲什麼我使用 - 不承諾通過文件做到這一點。這是一個錯誤還是應該--no-commit這樣工作?我已經提交了甚至沒有添加到分支的文件的日誌條目。爲什麼會這樣做? – marked 2013-04-05 17:24:02

+1

@marked你正在合併兩個歷史。這意味着所有提交都出現在合併歷史記錄中。所以,這意味着合併分支會爲添加的文件創建一個歷史記錄條目,然後在合併期間將其刪除。聽起來很直截了當,它確切地描述了你所做的,不是嗎?雖然櫻桃採摘意味着你有選擇地選擇你想從歷史中挑選什麼。 – kan 2013-04-05 17:36:18

+0

您正在執行的選擇性合併和拆分分支之間的實質性區別在於,如果選擇僅合併story1更改合併,則以後無法合併story2更改,因爲您無法* remerge *。但分裂的分支可以按任何順序合併。 – kan 2013-04-05 17:43:22