2012-04-07 62 views
3

這可能是一個天真的git的問題,但在這裏它是:Cherrypick提交訂單

做一個拉請求之前,我通常在上游和櫻桃挑重要的提交創建最新提交一個新的分支我的開發分支。然後從我的新分支向遠程存儲庫發出拉取請求。

但我討厭合併衝突(儘管git mergetool在它們發生時有很多幫助)。我懷疑這些衝突是由櫻桃的命令造成的。我通常挑選一組從最老到最新的提交提交。這是正確的方法嗎?或者提交命令對git無關緊要?

是否有任何其他的技巧,以儘量減少櫻桃採摘過程中的合併衝突?

回答

7

你絕對應該按順序挑選承諾。如果你不這樣做,它們可能不適用 - 想象一個提交會添加foo.c,而下一個提交會修改它。很明顯,他們不會失去工作。總的來說,即使不是那麼明顯,也有一些合乎邏輯的發展流程,你不想惹它。這就是說,我不知道你爲什麼手動創建分支和櫻桃採摘;它與git pull --rebase等效(只要您不跳過提交)。

如果您在採摘櫻桃時遇到合併衝突,這更像是您開發過程不理想的標誌。這意味着你在開發分支中工作的東西也在上游改變。您可以通過不使用其他人正在使用的相同代碼或者在開發過程中更頻繁地從上游拉動(可能是pull --rebase)來幫助自己,而不是等到最後。

+0

非常感謝您的幫助。 – systemsfault 2012-04-07 20:32:58

2

絕對地,提交訂單很重要。如果提交B修改了首次在提交A中引入的內容,那麼在應用提交A之前,您無法應用提交B.

您的工作流程很奇怪。您應該或者git rebase您的分行在上游分行的內容之上重新構建它,或者將git merge上游分行重新構建到您的分行。這樣可以避免挑選工作,並且讓git自動解決衝突的機會更大。