我已分叉託管在Bitbucket上的Mercurial存儲庫。我沒有原始存儲庫的寫入權限。我向我的叉子做了幾次提交。讓我們稱他們爲A,B,C和d,即最新的第一:如何爲Mercurial中的一個特定提交進行拉取請求?
- d [最新]
- Ç
- 乙< ---拉只在此所做的更改提交
- 一[最古老]
現在我想讓拉請求在提交乙獨家所有的變化,忽視了A,C和D是有辦法做到這一點?
我已分叉託管在Bitbucket上的Mercurial存儲庫。我沒有原始存儲庫的寫入權限。我向我的叉子做了幾次提交。讓我們稱他們爲A,B,C和d,即最新的第一:如何爲Mercurial中的一個特定提交進行拉取請求?
現在我想讓拉請求在提交乙獨家所有的變化,忽視了A,C和D是有辦法做到這一點?
首先讓我們來理解你的圖表是怎樣的。假設分叉回購的小費是x
,它具有線性歷史記錄,沒有分支。所以,你的歷史看起來像這樣:
[1000's of commits] -> parent(parent(x)) -> parent(x) -> x
現在你做四次提交即A
,B
,C
和D
與A
是一個最古老和D
是最新的一個。現在你繪製看起來是這樣的:
x -> A -> B -> C -> D
注意歷史早於x
仍完好無損,它上面沒有包括在內,因爲它不是必需的資料片什麼,我們正在討論。
現在您要創建僅包含B
變更集的請求。這是不可能的當前狀態,因爲主要回購不知道A
也是B
的父母。在父母不在家的情況下,你不能生孩子。
所以,如果我們只想提出一個B
變更集的請求,我們需要rebase
它在x
。
rebase
是水銀的擴展,你可以通過添加如下行到.hg/hgrc
[extensions]
rebase =
打開它讓我們重訂一次,我們已經啓用了擴展。
hg rebase -s B -d x
這將導致:
x -> A
\-> B -> C -> D
現在因爲B
的母公司是x
你可以創建一個拉請求。您還可以通過將C
重新設置爲A
來獲得更清晰的歷史記錄狀態。它將產生兩個分支,其中一個分支包含要推送的變更集以及其他本地變更集。再次重訂的樣子:
hg rebase -s C -d A
,並將所得的歷史狀態是:
x -> A -> C -> D
\-> B
現在,您可以輕鬆地創建只包含B
變更pull請求。
相關鏈接: