2012-09-06 148 views
2

我在本地存儲庫中有兩個分支:defaults1如何將文件從分支添加到Mercurial中的另一個分支?

default分支處有一個叫做def.txt等的文件。 s1分支的文件名爲set3.txt,set1.txt等。我想將s1分支的set1.txt分支也添加到default分支。

當工作目錄在default分支時,我試圖使用hg add set1.txt命令。但是,因爲default分支沒有這個文件,所以我不能添加它,它總是給我一個錯誤信息,如"no set1.txt file found"

我不想使用merge命令,因爲我不想將s1分支中的所有其他文件合併到default分支。我只想添加一個文件,set1.txt。我也嘗試hg transplant -b s1,但它似乎沒有達到相同的目的。

那麼任何想法如何解決這個問題?我的目標是有這兩個分支看起來如下:

  • defaultdef.txtset1.txt

  • s1set1.txtset3.txt

我的機器是Red Hat具有Mercurial 1.7.3和TortoiseHG 1.5的Linux Workstation 6。

回答

4

您可以使用一個技巧:將文件set1.txt「還原」爲分支s1。由於分支機構正在修訂,這將工作:

$ hg revert -r s1 set1.txt 
+0

非常感謝。有用 ! – Cassie

0

hg revert是一個可愛的把戲。然而,我更傾向於使用hg cat -r s1 set1.txt > set1.txt,這更明確地做你所期望的。我認爲這兩個命令最終不會有任何區別。

直觀地說,您試圖將單個文件從一個分支合併到當前分支中。快速谷歌出現了這篇文章探索DVCS中的這個概念:http://josefbetancourt.wordpress.com/2011/01/13/merge-single-file-hg/

+0

'hg revert'hack具有保留文件歷史的優點。如果你在'default'分支上執行'hg log set1.txt',它將顯示所有以前的提交。這不像有些人發現的那樣兇手,但它可能是有用的。 – brandizzi

+0

那是個很好的理由。我喜歡。 – dimo414

相關問題