2016-12-05 59 views
0

我已分叉託管在Bitbucket上的Mercurial存儲庫。我沒有原始存儲庫的寫入權限。我向我的叉子做了幾次提交。讓我們稱他們爲A,B,C和d,即最新的第一:如何爲Mercurial中的一個特定提交進行拉取請求?

  • d [最新]
  • Ç
  • 乙< ---拉只在此所做的更改提交
  • [最古老]

現在我想讓拉請求在提交乙獨家所有的變化,忽視了A,C和D是有辦法做到這一點?

回答

2

首先讓我們來理解你的圖表是怎樣的。假設分叉回購的小費是x,它具有線性歷史記錄,沒有分支。所以,你的歷史看起來像這樣:

[1000's of commits] -> parent(parent(x)) -> parent(x) -> x 

現在你做四次提交即ABCDA是一個最古老和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請求。

相關鏈接:

Rebase Extension

相關問題