version-control - 在 Mercurial 中使用多个远程位置进行推拉

标签 version-control mercurial dvcs

(我是 mercurial 和版本控制方面的新手。)

我正在使用来自 bitbucket(mercurial) 的开源框架克隆。每当该框架更新时,我都会运行 hg pullhg update 来获取最新的副本。现在我出于自己的目的对该框架进行了一些修改,并将其存储在 bitbucket 的另一个存储库中。现在,如果更新了原始框架,我如何将这些更改 merge 到我自己的存储库中,以保持我自己的更改完好无损。

最佳答案

好吧,这是这个的工作流程。

首先,您从 bitbucket 上的第三方项目克隆您要修改的项目,因此您在本地克隆中获得以下历史记录:

3rd:   1---2---3
clone: 1---2---3

然后您在您的 bitbucket 帐户上创建一个新项目,并推送到该 repo,所以现在您拥有:

3rd:   1---2---3
clone: 1---2---3
fork:  1---2---3

这里的“fork”只是指在 bitbucket 上的公共(public)克隆。

然后你对你的克隆做了一些更改,并推送到你自己的 bb 存储库,现在你有:

3rd:   1---2---3
clone: 1---2---3---4---5
fork:  1---2---3---4---5

然后在某个时候,第三方更新了他们的存储库,所以现在您有:

3rd:   1---2---3---4'--5'
clone: 1---2---3---4---5
fork:  1---2---3---4---5

修订号后面的'只是表示编号相同,但变更集内容不同。

此时,您将第 3 方更改拉到您自己的克隆中:

3rd:   1---2---3---4'--5'

clone: 1---2---3---4---5
                \
                 \-6'--7'

fork:  1---2---3---4---5

然后您在您的克隆中执行 merge ,并且您还实现了一些新的更改:

3rd:   1---2---3---4'--5'

clone: 1---2---3---4---5----8---9---10
                \          /
                 \-6'--7'-/

fork:  1---2---3---4---5

并推送到你的 bb 仓库:

3rd:   1---2---3---4'--5'

clone: 1---2---3---4---5----8---9---10
                \          /
                 \-6'--7'-/

fork:  1---2---3---4---5----8---9---10
                \          /
                 +-6'--7'-+

同样,在某个时候,第三方开发人员更新了他们的存储库:

3rd:   1---2---3---4'--5'--6'--7'

clone: 1---2---3---4---5----8---9---10
                \          /
                 +-6'--7'-+

fork:  1---2---3---4---5----8---9---10
                \          /
                 +-6'--7'-+

所以你重复这个过程,先拉:

3rd:   1---2---3---4'--5'--6'--7'

clone: 1---2---3---4---5----8---9---10
                \          /
                 +-6'--7'-+--11'---12'


fork:  1---2---3---4---5----8---9---10
                \          /
                 +-6'--7'-+

你 merge :

3rd:   1---2---3---4'--5'--6'--7'

clone: 1---2---3---4---5----8---9---10---13
                \          /            /
                 +-6'--7'-+--11'---12'-+


fork:  1---2---3---4---5----8---9---10
                \          /
                 \-6'--7'-/

然后推送:

3rd:   1---2---3---4'--5'--6'--7'

clone: 1---2---3---4---5----8---9---10---13
                \          /            /
                 +-6'--7'-+--11'---12'-+     <-- 11' and 12' corresponds to 6'/7'

fork:  1---2---3---4---5----8---9---10---13
                \          /            /
                 +-6'--7'-+--11'---12'-+

关于version-control - 在 Mercurial 中使用多个远程位置进行推拉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4679115/

相关文章:

version-control - 如何提高开发团队的 Joel Test 分数?

deployment - 使用 Mercurial 在多台服务器上自动部署 Web

version-control - Mercurial:表示分支已通过测试?

SVN & DVCS 工作流程——保存历史

git - 为什么企业要使用分布式版本控制?

version-control - 简单的版本控制系统或版本控制文件系统或版本控制数据库

xcode - 放弃 Xcode 4.2 中的所有更改

node.js - 源代码控制 (git) docker-compose.yml

mercurial - 是否可以在 .hgignore 中使用 Root过的 glob 模式?

java - Mercurial v Git v 颠覆