我没有运气使用Mercurial for Git中的书签,比如分支。
从文章https://www.mercurial-scm.org/wiki/BookmarksExtension开始,我在.hgrc文件中将“track.current”设置为true。
摘录如下:
默认情况下,当几个书签 指向相同的变更集,他们会 一起前进。它是 有可能获得更像Git的 添加以下内容的经验 .hgrc的配置选项
[bookmarks] track.current = True
但是,一旦我开始尝试在多个书签上进行并行/独立开发,然后在书签之间来回切换,我会遇到以下情况:
abort: crosses branches (use 'hg merge' or 'hg update -C')
重现的例子:
# Make a new directory and Mercurial repository
$ mkdir bookmark
$ cd bookmark
$ hg init
# Create two bookmarks
$ hg bookmark bk1
$ hg bookmark bk2
# Checkout bk1
$ hg update bk1
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
# Create and commit a file to bk1
$ touch bk1.txt
$ hg add
adding bk1.txt
$ hg commit -m "bk1 file"
# Checkout bk2
$ hg update bk2
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
# Create and commit a file to bk2
$ touch bk2.txt
$ hg add
adding bk2.txt
$ hg commit -m "bk2 file"
created new head
# Checkout bk1
$ hg up bk1
abort: crosses branches (use 'hg merge' or 'hg update -C')
这是正常行为,因为在书签之间移动时会出现“交叉分支”强制合并或文件覆盖吗?
对于'Git-like experience',我希望能够在bk1和bk2之间来回翻动,在任何一个上提交和开发,在我需要的时候合并。
答案 0 :(得分:16)
请升级到上周发布的Mercurial 1.4。然后,您将能够在没有警告的情况下在分支上的头之间切换。
答案 1 :(得分:2)
使用1.4之前的Mercurial版本,只要您的工作树是干净的(没有未提交的更改),您就可以提供-c标志。