http://www.codingboy.com/zlog/post/21.html
Mecurial的branch使用,branch在Mercurial中使用有点特别,需要注意一下,使用不当后果自负哦。
1.
>hg init my-test
2.
>cd my-test
这时的branch是default,可以用如下命令查看
1.
>hg branch
新建一个stable branch,并且切换过去
1.
>hg branch stable
2.
>hg ci –m "add stable branch"
提交stable branch
1.
>hg update default –C
切换到default branch
1.
>echo 1111 >> 1.txt
2.
>echo 2222 >> 2.txt
3.
>echo read me >> readme.txt
4.
>hg ci –A –m "add some files"
在default branch上提交一些文件。
呵呵现在想把readme.txt merge到 stable branch上,Mercurial不支持,⊙﹏⊙b汗。不过可以这样做
1.
>hg update stable -C
2.
>hg revert –r defaut readme.txt
先切到stable branch上,在恢复一个readme.txt文件。呵呵
1.
>hg status
查看一下状态时M的。直接提交
1.
>hg ci –m "merge readme.txt from default branch"
可以查看一下heads发现,有两个头,一个stable的一个default,这个当然废话。不过一定记住。呵呵,后面的动作就危险了。请看
1.
>hg update default –C
2.
>hg branch stable –force
切到default branch上,保持当前文件,强行切到stable上。这个强。如果这个时候commit会怎么样?试试
1.
>hg ci –m "nothing"
在看看heads,呵呵还是两个头,都是stable的。
这时候revert一下推到stable原始状态。
1.
>hg revert –r 8
这个8是stable branch上“merger readme.txt”的那个版本,查看一下目录下的文件结构,呵呵好像和以前一样。不过如果你认为这个命令会退回到8,那就错了。看看heads会发现 仍然两个heads,都是stable,这个时候你要merge一下才可以。
1.
>hg merge –r 8
不过这个时候default在哪里?看下面
1.
>hg update default –C
呵呵还在,加个tag先
1.
>hg tag b1.0
看看heads,如果不做上面的merge,这个时候会有3个heads。之后再做一些操作。
1.
>echo 3333 >> 3.txt
2.
>echo 4444 >> 4.txt
3.
>hg ci –m "add 3.txt and 4.txt"
default branch多了两个文件。现在merge到stable上。
1.
>hg update stable –C
2.
>hg merge default
看看目录,很晕,1.txt 和2.txt没merge过来。~~~~(>_<)~~~~ 杯具呀。为什么?h都是上面hg revert –r 8搞的鬼,╮(╯▽╰)╭
总结:
1.hg branch *** 切换branch尽量少用。没事别用,用hg update 和hg merge搞定比较好。
2.merge单个文件可以用hg revert做。