你只需要合并,如果你已经在你的仓库致力于为好。如果你和你的朋友共享知识库,那么当你没有做任何事情时,他会犯一次或多次,当他完成所有你需要做的事情时,就是拉和更新,而不是合并。
如果你做了本地提交,这里的情况如何展开:
local: 1---2---3---4
central: 1---2---3---4
friend: 1---2---3---4
他承诺:
local: 1---2---3---4
central: 1---2---3---4
friend: 1---2---3---4---5---6
您承诺:
local: 1---2---3---4---X---Y
central: 1---2---3---4
friend: 1---2---3---4---5---6
他推:
local: 1---2---3---4---X---Y
central: 1---2---3---4---5---6
friend: 1---2---3---4---5---6
你拉:
local: 1---2---3---4---X---Y
\
+-5---6
central: 1---2---3---4---5---6
friend: 1---2---3---4---5---6
您合并:
local: 1---2---3---4---X---Y---7
\ /
+-5---6-+
central: 1---2---3---4---5---6
friend: 1---2---3---4---5---6
然后你推和他拉,所有的仓库都是相同的。
但是,如果当他对项目的工作,你什么也没做,下面的情况如何展开:
local: 1---2---3---4
central: 1---2---3---4
friend: 1---2---3---4
他承诺:
local: 1---2---3---4
central: 1---2---3---4
friend: 1---2---3---4---5---6
他推:
local: 1---2---3---4
central: 1---2---3---4---5---6
friend: 1---2---3---4---5---6
您拉动并更新:
其原因,这是从Subversion是如何做到的是与颠覆你有集中式存储库,每个人都不得不谈不同。因此,当你开始提交你的本地修改时,Subversion客户端会说“对不起,你需要更新才能提交”,并且你必须执行那个更新。
如果在那时您更改了在中央存储库中也发生更改的文件,Subversion会将您的本地更改与服务器更改合并,并将您的修订点更新为提示。如果没有冲突,这将是一个无声的合并,否则你会得到合并冲突。
Mercurial完全一样,除了合并不是沉默的。您既可以在自己的本地存储库中单独提交,也不需要彼此交谈,但是当您尝试将所有更改集成到一个公共存储库时,则需要合并。 Mercurial从不改变现有的变更集(除非你使用一些扩展名进行历史编辑),所以它不能自动找出你的并行变更集如何协同工作。
如果你们两个都没有处理过相同的文件,或者你们对相同文件所做的更改没有相互冲突,那么只需点击几下鼠标就可以完成合并。
在任何情况下,Mercurial都有很多选择,但分布式部分确实改变了您需要考虑历史的方式。
你能更具体地说“完全失败吗?”他只改变了文件失败,还是其他文件?你有任何分支?你以什么顺序专门使用了哪些命令?你们是否都在同一个操作系统上?你得到了什么具体的错误信息? – 2011-02-24 05:46:38
执行'hg pull'后执行'hg update'吗?使用'hg pull'时,任何可用的变更集都会被拉入您的本地存储库。然后您必须执行“hg update”将变更集引入您的工作项目中。 – 2011-02-24 06:54:47
或更好,如果你想在一个命令中使用“hg pull -u”来进行SVN等效更新。 – Serkan 2011-02-24 07:21:50