2013-10-18 56 views
1

我有兩個分支,分別命名爲X和Y.先前創建了X,y是最新的分支。現在我在分支'Y',我修改了一些文件。我需要提交已修改的文件,並且需要將更改提交到「X」分支而不是「Y」分支。我如何用汞汞或烏龜汞來做到這一點? (如何切換到「X」分支並提交更改?)如何使用龜甲汞切換分支提交?

+0

您的意思是「分支」在拓撲意義上(並行開發流程)還是Mercurial命名分支的着色意義上? – Face

回答

0

你可以

  • 提交到Y分歧
  • 然後移植/它嚴重到X分支
  • 然後從Y分歧剝離變更

至於導致它看起來像你COMMITED它到X而不是Y

0

如果你還沒有提交更改,那麼你應該能夠做到如下:

hg update X 
hg commit 

除非您在文件中的相同位置更改了某些相同的文件,否則這應該足夠了。如果你有,那麼你的hg update X命令應該失敗。此時您有幾個選項。

您可以使用Mercurial隊列(mq)。

你可以把你的電流變化成一個補丁隊列:

hg qnew stufftomove -e 

你會與你使用任何編輯器創建一個提交信息呈現。繼續,當它最終被提交時,用你想要的任何東西填寫你的提交信息。如果您不使用-e,它只會創建沒有提交消息的修補程序隊列。稍後,如果需要,您可以使用hg qrefresh -e作出提交消息。創建補丁隊列

後,隨着彈出它關閉:

hg qpop 

現在移動到X分支:

hg update X 

現在推補丁隊列。這將適用的補丁文件:

hg qpush 

這可以去幹淨,或者如果你確實有合併衝突,你會得到名爲.rej文件已創建的消息。那些向您顯示無法自動應用的更改的部分。

如果您有名爲.rej文件,手動應用沒有工作的碎片,然後運行 汞柱qrefresh

這將更新有了新的變化補丁文件。

當一切看起來像你希望它是什麼,我們也可以將補丁隊列到真正與

hg qfinish stufftomove 

文件更改。現在應該在你想他們是在樹枝上被提交提交。

另外,如果你已經犯下了錯誤的分支的變化,並沒有推你的變化(或者讓他們拉)到遠程倉庫,你可以這樣做:

hg qimport -r <revision to import> 

在這一點上,繼續從hg qpop開始的上述說明。

如果您可以更具體地瞭解文件和分支的狀態,我可以更具體地幫助您。無論如何,我希望這會有所幫助。

旁註:如果你有合併衝突在上面的步驟,不喜歡與名爲.rej的文件時,您可以使用hg rebase,這將能夠幫助您解決在您最喜愛的合併工具的衝突(或無論你配置什麼工具)。希望這可以幫助。