2017-07-18 40 views
2

我的存儲庫中有兩個分支(用於此問題):masterperformance_testing。我已收到master分支的更改。我也需要將它們放入performance_testing。我需要保持這兩個分支的存在和分開,所以合併不合適。我想我可以在一個分支中引入更改並提交,然後在另一個分支中執行相同的操作。但是這似乎很容易出錯,我認爲git會有更直接的方法來做到這一點。我該怎麼做呢?Git:將更改應用到兩個分支

回答

2

在這種情況下,您經常會做的是cherry picking,它只涉及將一個分支的提交子集應用到另一個分支。

例如,你有承諾ABCDEFmaster,你想拿提交BCDperformance_testing

git checkout performance_testing 
git cherry-pick B^..D 

或者你也可以列出單獨提交在多個單獨的櫻桃挑選命令。當你不需要連續的一系列提交時,這很有用。例如:

git cherry-pick B D 

需要注意的是B來到之前 d的歷史。

欲瞭解更多詳情,請參閱:How to cherry-pick multiple commits(其中還包括一些偉大的圖表,我不會偷偷回答這個答案)。

是的,有很多不同的選項可供選擇。這是一個基本和通用的解決方案,讀者可以選擇現在申請,以瞭解它是如何工作的。 git rebase --onto是另一種選擇,就像不同的分支管理一樣,但沒有考慮到特定的情況,櫻桃採摘應該獲得最大的里程。

+0

謝謝。做過這個。看起來像更改被放入提交確定。有趣的是,它看起來像提交是在主分支。如果我簽出'performance_testing',git日誌會在* master *中顯示SHA 348f3e ...的最新條目,並且如果我簽出'master',則git log將在master中顯示SHA 825f44 ...的最新條目。這看起來很奇怪。它是否正確?當我在'performance_timing'中嘗試稍後提交時會發生什麼?謝謝。 –

+0

@ bob.sacamento這是很正常的,因爲提交的祖先是用於創建提交哈希的數據的一部分,所以與不同父代相同的差異會有不同的ID。例如,讓你可以單獨使用帶有* commit-ish *的'git cherry-pick'。 – msanford

+0

再次感謝。現在,如果我檢查'performance_testing'並進行一些更改和提交,那麼提交將會按照我希望的或'master'的方式進行'performance_testing'嗎? –

1

您可以使用git cherry-pick將一個或多個提交(副本)應用到新分支。

新提交將「與原件(相同的差異,相同的消息等)具有相同的效果,但在其他方面是獨立的。

2

最好的方法是爲變更創建一個功能分支,並在masterperformance_testing的末尾合併它。櫻桃採摘被認爲是反模式。

+0

這就是我喜歡做事情的方式,儘管我自己不會那麼喜歡「反模式」,但我認爲這是一個判斷力的呼喚,不管哪種方式都能帶來好處,並選擇平衡點。但我幾乎總是自己做合併調用。我明白不喜歡沒有意義的合併提交,但我不明白不喜歡有意義的提交。 – jthill

+1

我不明白這個答案:在這種情況下不是'performance_testing' *特性分支*。據推測某些代碼已經從另一個分支合併到'master'中,並且這些更改將被性能測試? – msanford

+0

''performance_testing''是一個功能分支,但我們需要一個單獨的新變化。它們與'master'和''performance_testing''很相似,這就是爲什麼它們可以放入一個單獨的功能分支。 –

1

我需要保持兩個分支存在和分開,所以合併將是不合適的。

這並不一定遵循;合併後兩個分支仍然存在並且仍然是分開的。如果每個分支當前包含不能在另一個分支中發生的更改,則合併的情況不合適。

當你說你「收到master分支的變化」時,究竟是什麼意思?如果你的意思是有人推動對origin/master的更改,那麼這會限制你的選擇。否則將是最好的解決方案(在masterperformance_testing之間的合併基礎上創建分支,在那裏應用更改,然後將該分支合併到masterperformance_testing中)將變得複雜,因爲需要重寫已影響已分享的歷史記錄提交(刪除對master的更改的直接應用)。

如果更改直接應用於master,並且master包含的更改不能納入performance_testing:那麼除非協調歷史重寫是可以接受的,否則您的剩餘選項可能是挑選更改。在我看來,櫻桃採摘推薦方式往往和顯着的缺點,但如果你排除了其他解決方案,那麼這仍然是。

相關問題