我知道Mercurial for Beginners: The Definitive Practical Guide和Mercurial merge branches? (abort: push creates new remote branches)之类的答案
在这里,我无意中造成了Mercurial想要创建一个新的远程头的情况。取消此错误并在远程端留下很少或根本没有此错误的最佳方法是什么?
###> hg push
pushing to http://example.com
searching for changes
abort: push creates new remote heads on branch 'default'!
(did you forget to merge? use push -f to force)
###> hg revert --all -r tip
###> hg update -C
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
###> hg incoming
comparing with http://example.com
searching for changes
no changes found
###> hg summary
parent: 488:e3db024fe901 tip
Misc.
branch: default
commit: (clean)
update: 6 new changesets, 2 branch heads (merge)
###> hg pull
pulling from http://example.com
searching for changes
no changes found
###> hg glog
@ changeset: 488:e3db024fe901
| tag: tip
| summary: Misc.
|
o changeset: 487:b207579b9d41
| parent: 480:ce775708800c
| summary: Misc.
|
| o changeset: 486:59a7a5b34c7f
| | user: other
| | summary: fixes
| |
| o changeset: 485:b28264333e18
| | user: other
| | summary: binary
如果合并,似乎还可以:
hg merge
abort: outstanding uncommitted merges
但是
hg diff
显示了我没有进行的各种更改。我愿意重新应用我的更改...如何将所有这些归结为一个小技巧,放弃所有本地更改?
最佳答案
看来当您完成hg merge
时,您尚未提交结果更改集。
当您在另一个分支中合并时(在您的情况下,您可能需要指定hg merge 486
以在其他用户更改中进行合并),它将合并该分支到您的工作目录中。然后,您需要使用合并工具或手动编辑文件(然后在发生任何冲突时运行hg resolve
)来检查是否已解决所有冲突(如果有)。完成此操作后,您需要hg commit
新的,合并的变更集。
这可以解释为什么hg diff
给您许多您没有做的更改-它们是您尚未提交的在另一个分支上所做的更改。如果在工作目录中运行hg summary
或hg parents
,则应该看到列出了两个父项:486
和488
。您应该hg commit
这个工作目录,创建一个新的合并的489
。
如果要撤消当前合并并重新开始,则尝试运行hg update -C
是正确的,该操作将把工作目录设置回其原始(未合并)状态。
如果您想摆脱更改(487
和488
-您声明不介意重新应用更改),则最简单的选择就是无需重新扩展存储库,而只需重新克隆存储库并继续进行操作即可。从那里工作。
关于version-control - 如何撤销“中止:推送在分支上创建新的远程头”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15840429/