...所以我已经习惯了Mercurial(add
,)的简单内容commit
,diff
并发现了.hgignore文件(是的!)并且已经掌握了在分支(branch
,update -C
)之间创建和切换的问题.
我有两个主要问题:
如果我在分支"Branch1"并且我想从分支"Branch2"中提取一些但不是所有的更改,我该怎么做?特别是如果所有更改都在一个子目录中.(我想我可以克隆整个存储库,然后使用像Beyond Compare这样的目录合并工具来选择我的编辑.看起来应该有一种方法可以将一个文件或一个目录中的更改隔离开来.)
在分支之间切换update -C
似乎很容易,我想知道为什么我会打扰使用clone
.我只能想到几个原因(见下文) - 还有其他一些我缺席的原因吗?
一个.如果我需要同时对两个版本/分支进行操作(例如,执行性能度量差异)
湾 用于备份(clone
到物理上不同位置的网络驱动器的存储库)
C.像我上面提到的那样进行选择合并.
Draemon.. 50
我使用克隆:
短命的地方分支机构
克隆到不同的开发机器和服务器
以前的使用对我来说非常罕见 - 主要是当我尝试一个我可能想完全放弃的想法时.如果我想合并,我将要合并所有更改.这种分支主要用于跟踪不同开发者的分支,因此它们不会相互干扰.只是澄清最后一点:
我一直在努力改变我的变化,并将我的伙伴们的变化拉出来,他们拉我的.
当我方便的时候,我会将所有这些分支中的所有变化合并到我的中.
对于功能分支或更长寿的分支,我使用命名分支,这些分支在存储库之间更舒适地共享而不进行合并.当您想要有选择地合并时,它"感觉"更好.
基本上我这样看待它:
命名分支用于开发应用程序的不同分支或版本
克隆用于管理对相同版本的应用程序的不同贡献.
这是我的看法,但实际上这是政策问题.
我使用克隆:
短命的地方分支机构
克隆到不同的开发机器和服务器
以前的使用对我来说非常罕见 - 主要是当我尝试一个我可能想完全放弃的想法时.如果我想合并,我将要合并所有更改.这种分支主要用于跟踪不同开发者的分支,因此它们不会相互干扰.只是澄清最后一点:
我一直在努力改变我的变化,并将我的伙伴们的变化拉出来,他们拉我的.
当我方便的时候,我会将所有这些分支中的所有变化合并到我的中.
对于功能分支或更长寿的分支,我使用命名分支,这些分支在存储库之间更舒适地共享而不进行合并.当您想要有选择地合并时,它"感觉"更好.
基本上我这样看待它:
命名分支用于开发应用程序的不同分支或版本
克隆用于管理对相同版本的应用程序的不同贡献.
这是我的看法,但实际上这是政策问题.
对于问题1,您需要更清楚地了解"变化"的含义.你指的是以下哪些:
"我希望将不同分支中的一些变更集但不是全部变为这一变量集."
"我想将不同分支中某些文件的最新版本(但不是全部)拉入此版本."
如果你的意思是第1项,你应该研究移植扩展,特别是樱桃挑选几个变更集的想法.
如果您的意思是第2项,您将执行以下操作:
更新要将更改拉入的分支.
用于hg revert -r
将这些文件的内容更改为它们在另一个分支上的方式.
用于hg commit
将这些更改作为新的更改集提交到分支.
至于问题2,我从不使用存储库克隆来自己分支,所以我不知道.我使用命名分支或匿名分支(有时使用书签).