Mercurial:使用主存储库中的更改更新Fork
我正在关注这篇文章,但它似乎不适合我。由于我是Mercurial的新手,我可能会错过一些东西 脚本 以下是主存储库和my fork的URL。几个月前,我从主存储库创建了一个forkMercurial:使用主存储库中的更改更新Fork,mercurial,Mercurial,我正在关注这篇文章,但它似乎不适合我。由于我是Mercurial的新手,我可能会错过一些东西 脚本 以下是主存储库和my fork的URL。几个月前,我从主存储库创建了一个fork 主Nuget存储库: 我的fork存储库: 问题 我无法使用主存储库中的更改更新我的fork 采取的步骤 以下是我尝试过的步骤,但没有成功 PS C:\michael sync\git\nuget> hg clone https://hg.codeplex.com/forks/michaelsync/msy
- 主Nuget存储库:
- 我的fork存储库:
PS C:\michael sync\git\nuget> hg clone https://hg.codeplex.com/forks/michaelsync/msyncwillmakeyoubetter
destination directory: msyncwillmakeyoubetter
requesting all changes
adding changesets
adding manifests
adding file changes
added 2231 changesets with 13584 changes to 3800 files
updating to branch default
1205 files updated, 0 files merged, 0 files removed, 0 files unresolved
PS C:\michael sync\git\nuget> cd .\msyncwillmakeyoubetter
PS C:\michael sync\git\nuget\msyncwillmakeyoubetter> hg pull https://hg.codeplex.com/nuget
pulling from https://hg.codeplex.com/nuget
searching for changes
adding changesets
adding manifests
adding file changes
added 301 changesets with 2574 changes to 838 files (+1 heads)
(run 'hg heads' to see heads)
PS C:\michael sync\git\nuget\msyncwillmakeyoubetter> hg commit -m "sync the changes from main respo to my fork"
nothing changed
PS C:\michael sync\git\nuget\msyncwillmakeyoubetter> hg push
pushing to https://hg.codeplex.com/forks/michaelsync/msyncwillmakeyoubetter
searching for changes
abort: push creates new remote branches: 1.6, 1.6.1, 1.7!
(use 'hg push --new-branch' to create new remote branches)
我不明白的是,为什么从主存储库中提取代码后没有任何更改。它说当我试图做出承诺时,一切都没有改变
我查看了这些帖子,但直到现在才使其正常工作。首先,了解您使用的各种命令的具体功能非常重要:
pull
:从存储库中检索更改,但不要将其应用于工作副本commit
:将工作副本上的更改应用于本地目录push
:将本地存储库中的所有更改集推送到远程存储库update
(您没有使用):将您的工作副本从本地存储库更新到特定的变更集拉取
,如果您想“应用”对工作副本的更改,您必须执行更新
,或者,您也可以duhg pull-u
。如果您在上次拉入
后做了一些更改,您可能需要合并
,而不是更新,如果您查看链接的文档,他们正在执行合并
(步骤3)
如果更新
成功,则无需执行提交
,更改已在本地存储库中。如果必须执行合并
,则必须执行提交
,以确认所做的更改
关于push
部分,您正在按照错误消息中的说明创建新的分支。默认情况下,Mercurial不推送变更集创建新分支,您必须使用规定的命令:hg push--new branch
或专门推送分支hg push mybranch
我希望我的解释足够清楚,否则请随意评论。我还建议您阅读一些有关Mercurial的教程,例如本教程:谢谢您的解释。我会说我有两个存储库1)main和2)我的fork。。我有一份工作副本。我的工作副本是我的fork的克隆。正如你所看到的,我没有做任何改变。这是我第一次在我的新机器上克隆我的fork,所以我认为我不需要使用“hg更新”。。在我链接的文档中,它说如果我的工作副本有任何更改,我需要使用“hg merge”。但在我的例子中,我没有任何改变。我想你是在讨论我有一个工作副本和一个存储库的场景。但我正试图通过我的工作副本同步两个存储库。如果我误解了你的答案,请随时告诉我。。或者,如果我在步骤中遗漏了什么,请随时告诉我。您误解了“工作副本”和“存储库”之间的区别,您的每个克隆都是两者,这是DVCS的主要原则。远程存储库的数量不会改变答案。
commit
说没有变化是完全正常的,因为没有变化<代码>提交在本地级别工作,拉
/推
在远程级别工作。关于您的push
问题,只需运行Mercurial提出的命令:hg push——新分支
。顺便说一句,你应该认真阅读并遵循我链接的教程来理解所有这些差异。这个答案有点错误。除非工作文件夹中已有更改,否则不需要在更新后提交。问题中出现问题的原因是,与fork的服务器副本相比,pull之后存储库中有新的分支。