Mercurial 中具有多个远程位置的推拉

发布于 2024-10-11 11:57:42 字数 242 浏览 2 评论 0原文

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

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

(I am newbie in mercurial. and version control. )

I am using an opensource framework clone from bitbucket(mercurial). whenever that framework is updated I run hg pull and hg update to get recent copy. now I did some modification to that framework for my own purpose, which I store at another repository on bitbucket. Now If original framework is updated, how do I merge that changes in to my own repository keeping my own change intact.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

痞味浪人 2024-10-18 11:57:42

嗯,这是这个的工作流程。

首先,您从 bitbucket 上要修改的第三方项目进行克隆,这样您就可以在本地克隆中获得以下历史记录:

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

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

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

这里的“fork”仅仅意味着bitbuck上的公共克隆。

然后你对你的克隆进行一些更改,并推送到你自己的 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 方更改拉入您自己的克隆中:

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'-+

Well, here's the workflow for this.

First you clone from the third party project on bitbucket, that you want to modify, so you get the following history in your local clone:

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

Then you create a new project on your bitbucket account, and push to that repo, so now you have:

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

"fork" here simply means public clone on bitbucket.

Then you make some changes to your clone, and push to your own bb repository, now you have:

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

Then at some point, the third party updates their repository, so now you have:

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

The ' behind the revision numbers just mean that the numbers are the same, but the changeset contents are not.

At this point, you pull the 3rd party changes down into your own clone:

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

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

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

Then you perform a merge in your clone, and you also implement a few new changes:

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

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

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

and push to your bb repository:

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'-+

Again, at some point, the third party developer updates their repo:

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'-+

So you repeat the process, first pull:

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'-+

You 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'-/

And push:

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'-+
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文