(我是mercurial和版本控制的新手。)
我正在使用bitbucket(mercurial)的开源框架克隆。每当更新该框架时,我都会运行 hg pull 和 hg update 来获取最近的副本。现在我为了我自己的目的对该框架进行了一些修改,我将其存储在bitbucket上的另一个存储库中。现在如果更新原始框架,如何将更改合并到我自己的存储库中,保持我自己的更改完好无损。
答案 0 :(得分:6)
嗯,这是工作流程。
首先,你要修改bitbucket上的第三方项目,以便在本地克隆中获得以下历史记录:
3rd: 1---2---3
clone: 1---2---3
然后你在你的bitbucket帐户上创建一个新项目,然后推送到那个仓库,所以现在你有:
3rd: 1---2---3
clone: 1---2---3
fork: 1---2---3
“fork”这里只是意味着bitbucket上的公共克隆。
然后,您对克隆进行了一些更改,并推送到您自己的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
修订号后面的'仅表示数字相同,但变更集内容不是。
此时,您将第三方更改下拉到您自己的克隆中:
3rd: 1---2---3---4'--5'
clone: 1---2---3---4---5
\
\-6'--7'
fork: 1---2---3---4---5
然后在克隆中执行合并,并且还实现了一些新的更改:
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'-+
你合并:
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'-+