我正在爲我的應用程序中的新功能創建命名的Mercurial分支,並且在完成特定功能後,我將該分支合併到默認分支中,並關閉此功能分支。如何在合併後刪除Mercurial分支
但我不知道是否有辦法完全刪除那些命名分支,而不會丟失合併到默認分支的更改?
我正在爲我的應用程序中的新功能創建命名的Mercurial分支,並且在完成特定功能後,我將該分支合併到默認分支中,並關閉此功能分支。如何在合併後刪除Mercurial分支
但我不知道是否有辦法完全刪除那些命名分支,而不會丟失合併到默認分支的更改?
不,沒有。
當你合併了兩個分支時,合併提交依賴於它的兩個父提交的存在。這意味着你不能刪除組成合並分支的提交,除非你也刪除了你不想做的合併提交。
這也不是「Mercurial way」做事情。當一個分支合併到另一個分支中,並且該分支沒有進一步的開發時,Mercurial認識到該分支不再活躍; hg branches
會將那些不活動的分支放在列表的底部。您也可以使用hg commit --close-branch
關閉分支,該分支將從hg branches
列表中刪除分支(除非給出-c
參數)。
聽起來你應該看看Mercurial隊列(MQ),因爲它支持類似於你所描述的工作流程。例如,您可以設置多個MQ隊列,每個隊列都代表一個開發分支。
只是推我的合併特性分支到遠程服務器之前,我想:「我不想讓任何人知道我的分支,我寧願它從未存在過」。所以我決定在推送到遠程之前將所有本地更改放入一個提交中。
克隆起源和分支倉庫到單獨的目錄:
hg clone ssh://site//hg/repository repository-origin
hg clone /home/user/work/repository repository-branch
合併默認和特徵內部庫分支分支:
cd repository-branch
hg merge feature-branch
hg commit -m "feature-branch: merging into default"
cd ..
創建主庫:
hg clone repository-origin repository
覆蓋所有文件在主與庫分支文件(不包括隱藏的):
rsync -av --exclude=".*" repository-branch/ repository
合併所有陳從功能分支主 GES單承諾:
cd repository
hg commit -m "feature-branch: merging into default"
推到遠程
這可能是件好事,所有的/部分提交免受不必要的分支的最後一個內部消息提交消息。
你的回答是近乎完美的(我已經upvoted它)但@lvica應該在MQ之前查看書籤。 MQ很難。這是一個真正的powertool,現在它已經失寵了,現在階段(並且很快就已經過時了)在這裏。另一方面,書籤非常適合每個功能分割,永久命名的分支可能是矯枉過正的。 –
@ Ry4an是的,我忘了他們(因爲我從來沒有用過它們)。你如何處理書籤合併後的刪除? –
您只需使用'hg bookmark --delete bookmark_name'刪除書籤。很多很棒的信息在這裏:http://mercurial.selenic.com/wiki/Bookmarks/ –