首页 > 代码库 > 突击Mercurial SCM(HG)4---Merge
突击Mercurial SCM(HG)4---Merge
Scenario:
当自己修改完代码,准备commit之前做了一次pull+update,做了些解决冲突工作,然后验证代码是否正常工作。
确认一切正常后,执行hg commit,然后执行hg push。但是网络出现问题,push失败。等到网络恢复正常后,发现自己的版本已经不是最新版了,
push继续失败。提示:
abort: push creates new remote head 8f1da767f592!
hint: you should pull and merge or use push -f to force
Merge:
按照提示所述,我们需要更新代码并做一次merge操作才可以正常提交自己的代码。
执行hg pull后,hg很人性的提示我们:
(run ‘hg heads‘ to see heads, ‘hg merge‘ to merge)
当我直接执行hg merge时,hg再次提示我:
abort: outstanding uncommitted changes (use ‘hg status‘ to list changes)
看来哪里还是有问题,好吧,先来看看merge的帮助吧。
尝试一下hg update --clean,看起来不错。
看起来成功了,按照提示,再commit一下。此时我们的提交信息只要告知一下这是一次merge操作即可。
然后push,成功。结果是原来的commit还是那时的changeset,最新的commit就是你刚刚提交的,信息为merge的那一条。
至此merge成功!
当自己修改完代码,准备commit之前做了一次pull+update,做了些解决冲突工作,然后验证代码是否正常工作。
确认一切正常后,执行hg commit,然后执行hg push。但是网络出现问题,push失败。等到网络恢复正常后,发现自己的版本已经不是最新版了,
push继续失败。提示:
abort: push creates new remote head 8f1da767f592!
hint: you should pull and merge or use push -f to force
Merge:
按照提示所述,我们需要更新代码并做一次merge操作才可以正常提交自己的代码。
执行hg pull后,hg很人性的提示我们:
(run ‘hg heads‘ to see heads, ‘hg merge‘ to merge)
当我直接执行hg merge时,hg再次提示我:
abort: outstanding uncommitted changes (use ‘hg status‘ to list changes)
看来哪里还是有问题,好吧,先来看看merge的帮助吧。
$ hg merge --help hg merge [-P] [-f] [[-r] REV] merge working directory with another revision The current working directory is updated with all changes made in the requested revision since the last common predecessor revision. Files that changed between either parent are marked as changed for the next commit and a commit must be performed before any further updates to the repository are allowed. The next commit will have two parents. "--tool" can be used to specify the merge tool used for file merges. It overrides the HGMERGE environment variable and your configuration files. See "hg help merge-tools" for options. If no revision is specified, the working directory‘s parent is a head revision, and the current branch contains exactly one other head, the other head is merged with by default. Otherwise, an explicit revision with which to merge with must be provided. "hg resolve" must be used to resolve unresolved files. To undo an uncommitted merge, use "hg update --clean ." which will check out a clean copy of the original merge parent, losing all changes. Returns 0 on success, 1 if there are unresolved files. options: -f --force force a merge with outstanding changes -r --rev REV revision to merge -P --preview review revisions to merge (no merge is performed) -t --tool VALUE specify merge tool use "hg -v help merge" to show more info
尝试一下hg update --clean,看起来不错。
$ hg update --clean 8 files updated, 0 files merged, 1 files removed, 0 files unresolved
再次执行merge。
$ hg merge 2 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don‘t forget to commit)
看起来成功了,按照提示,再commit一下。此时我们的提交信息只要告知一下这是一次merge操作即可。
然后push,成功。结果是原来的commit还是那时的changeset,最新的commit就是你刚刚提交的,信息为merge的那一条。
至此merge成功!
突击Mercurial SCM(HG)4---Merge
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。