Bry*_*yce 17 version-control mercurial
我知道Mercurial for Beginners:The Definitive Practical Guide和Mercurial合并分支的答案?(abort:push创建新的远程分支)
在这里,我无意中创造了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
Run Code Online (Sandbox Code Playgroud)
如果我合并,它似乎没问题:
hg merge
abort: outstanding uncommitted merges
Run Code Online (Sandbox Code Playgroud)
但是hg diff
展示了我没有做出的各种改变.我愿意重新应用我的更改......我怎样才能将这一切全部带回一个提示,放弃所有本地更改?
ica*_*bod 10
看起来当你完成一个时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
- 你声明你不介意重新应用你的更改),最简单的选择就是重新克隆存储库并从那里继续你的工作.
摆脱变化(前487和488):如果你觉得(像我一样)重新克隆存储库,如上所述甚至官方推荐这里是荒谬的,那么你应该得到MqExtension
启用Mq后,您可以轻松删除不需要的更改:
hg strip 487
hg strip 488
Run Code Online (Sandbox Code Playgroud)