用于合并多个头的Mercurial用法

Nik*_*ntz 12 mercurial

我是一个善变的新手,想学习如何使用我的存储库.你能告诉我如何将我朋友的工作与我合并吗?谢谢

$ hg update tip
abort: crosses branches (merge branches or use --clean to discard changes)

$ hg heads
changeset:   265:ac5d3c3a03ac
tag:         tip
user:        roberto.cr
date:        Thu Oct 06 07:32:15 2011 +0000
summary:     fixing "redirects" links

changeset:   261:6acd1aaef950
user:        niklasro
date:        Thu Oct 06 07:53:19 2011 +0000
summary:     auth backend + js

$ hg update
abort: crosses branches (merge branches or use --clean to discard changes)
Run Code Online (Sandbox Code Playgroud)

我能用hg解决吗?

$ hg resolve
abort: no files or directories specified; use --all to remerge all file

$ hg glog | more
@  changeset:   266:2bf5b62720fc
|  tag:         tip
|  parent:      261:6acd1aaef950
|  user:        niklasro
|  date:        Thu Oct 06 12:48:20 2011 +0000
|  summary:     added
|
| o  changeset:   265:ac5d3c3a03ac
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:32:15 2011 +0000
| |  summary:     fixing "redirects" links
| |
| o  changeset:   264:2fd0bf24e90f
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:29:58 2011 +0000
| |  summary:     fixing "redirects" links
| |
| o  changeset:   263:29a373aae81e
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:25:05 2011 +0000
| |  summary:     fixing "redirects" links
| |
| o  changeset:   262:d75cd4d3e77a
| |  parent:      260:dfb54b99f84d
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:24:55 2011 +0000
| |  summary:     fixing "redirects" links
| |
o |  changeset:   261:6acd1aaef950
|/   user:        niklasro
|    date:        Thu Oct 06 07:53:19 2011 +0000
|    summary:     auth backend + js
|
o  changeset:   260:dfb54b99f84d
|  user:        niklasro
|  date:        Wed Oct 05 05:34:37 2011 +0000
|  summary:     FB buggfix example.html
|
o  changeset:   259:92fb6b1bc492
|  user:        niklasro
|  date:        Thu Sep 29 16:42:33 2011 +0000
|  summary:     changes
Run Code Online (Sandbox Code Playgroud)

解决方案是hg revert -a,它现在看起来很成功

$ hg glog | more
@    changeset:   267:3b2bb6de33eb
|\   tag:         tip
| |  parent:      266:2bf5b62720fc
| |  parent:      265:ac5d3c3a03ac
| |  user:        niklasro
| |  date:        Thu Oct 06 16:06:21 2011 +0000
| |  summary:     merge
| |
| o  changeset:   266:2bf5b62720fc
| |  parent:      261:6acd1aaef950
| |  user:        niklasro
| |  date:        Thu Oct 06 12:48:20 2011 +0000
| |  summary:     added
| |
o |  changeset:   265:ac5d3c3a03ac
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:32:15 2011 +0000
| |  summary:     fixing "redirects" links
| |
o |  changeset:   264:2fd0bf24e90f
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:29:58 2011 +0000
| |  summary:     fixing "redirects" links
| |
o |  changeset:   263:29a373aae81e
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:25:05 2011 +0000
| |  summary:     fixing "redirects" links
| |
o |  changeset:   262:d75cd4d3e77a
| |  parent:      260:dfb54b99f84d
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:24:55 2011 +0000
| |  summary:     fixing "redirects" links
| |
| o  changeset:   261:6acd1aaef950
|/   user:        niklasro
|    date:        Thu Oct 06 07:53:19 2011 +0000
|    summary:     auth backend + js
|
o  changeset:   260:dfb54b99f84d
|  user:        niklasro
|  date:        Wed Oct 05 05:34:37 2011 +0000
|  summary:     FB buggfix example.html
|
o  changeset:   259:92fb6b1bc492
|  user:        niklasro
|  date:        Thu Sep 29 16:42:33 2011 +0000
|  summary:     changes
Run Code Online (Sandbox Code Playgroud)

mpm*_*mpm 22

这里的基本问题是您的工作目录不干净.Mercurial通过未提交的更改防止人们意外地在分支之间跳转,因为这通常是一个坏主意.

让我们从第一个命令开始:

$ hg update tip
abort: crosses branches (merge branches or use --clean to discard changes)
Run Code Online (Sandbox Code Playgroud)

这告诉你两件重要的事情:

  • 你正试图越过分支
  • 你有未提交的更改

而且你有两个选择:

  • 合并
  • 使用hg update --clean来丢失你的更改

那么你的改变是什么?第一步是运行'hg status'.正如你所说'hg status输出许多文件前面加1或?'.那些'1'实际上是'!' 指示已删除/丢失的文件(获得更好的字体!).您应该对摘要进行双重检查,这将为您提供如下输出:

parent: 15200:fa6f93befffa 
 patch: use more precise pattern for diff header color styling (issue3034)
branch: default
commit: 1 deleted, 1 unknown (clean)   <- your changes
update: (current)
Run Code Online (Sandbox Code Playgroud)

如果此时尝试合并,您将收到如下消息:

$ hg merge stable
abort: outstanding uncommitted changes (use 'hg status' to list changes)
Run Code Online (Sandbox Code Playgroud)

如果您有丢失文件以外的其他更改,则需要考虑提交它们.

如果这些丢失的文件是您唯一的更改,则可以放弃它们:

hg revert -a
Run Code Online (Sandbox Code Playgroud)

完成后,您处于Mercurial允许您更新或合并而无需抱怨的状态.

最后,你说"hg status从其他项目输出许多文件,因为它开始于..我添加的文件是应该添加的唯一文件." 这是对Mercurial如何运作的基本误解.与CVS或SVN不同, Mercurial而言,只有一个项目,并且动作(提交/更新/合并/状态)同时在整个项目树上工作.子目录不是具有单独历史的独立项目.


And*_*eas 16

合并这两个头怎么样?

hg merge
Run Code Online (Sandbox Code Playgroud)

  • hg状态说什么? (2认同)