问题 定义我的下一个提交添加到哪个分支


假设我创建两个banches 与此同时

hg branch branch-A
hg branch branch-B

我如何发送我的下一个提交 分支-A 代替 分支-B


8119
2017-09-21 05:58


起源



答案:


hg branch X 不 没有 除了告诉Mercurial“我做的下一个提交应该在分支X上。”它实际上并没有“创建”分支。在至少有一个提交之前,分支不存在:

sjl at ecgtheow in ~/Desktop/test on default at tip
$ hg branch a
marked working directory as branch a

sjl at ecgtheow in ~/Desktop/test on a at tip
$ hg branch b
marked working directory as branch b

sjl at ecgtheow in ~/Desktop/test on b at tip
$ hg branches
default                        0:aae011bc1b00

sjl at ecgtheow in ~/Desktop/test on b at tip
$ echo foo >> x

sjl at ecgtheow in ~/Desktop/test on b at tip!
$ hg com -m1

sjl at ecgtheow in ~/Desktop/test on b at tip
$ hg branches
b                              1:b66106035d8d
default                        0:aae011bc1b00 (inactive)

sjl at ecgtheow in ~/Desktop/test on b at tip
$ 

所以你的问题的答案是:“使用 hg branch branch-A 将下一次提交标记为在分支A上。“


20
2017-09-21 11:56



很棒的信息,但可能值得添加OP正在尝试做的事情:hg branch branchA;承诺branchA; hg update default; hg branch branchB,提交到branchB。关键是“hg update default”,因此branchB基于与branchA相同的提交。 - Carl Meyer
好消息,不好的解释。在ecgtheow sjl ..呃..?还有hg com,为Google员工做这个hg提交。人们不应该需要解读答案。对不起,但是-1。 - Stolas
嗨,史蒂夫,你为什么不以比现在更明确的方式在你的指南上添加这些信息?可能会改进指南。 (“hg branch X除了告诉Mercurial之外什么都不做”,我做的下一次提交应该在分支X上。“它实际上并没有”创建“分支。一个分支在它至少有一个提交之前不存在”) - Niccolò


答案:


hg branch X 不 没有 除了告诉Mercurial“我做的下一个提交应该在分支X上。”它实际上并没有“创建”分支。在至少有一个提交之前,分支不存在:

sjl at ecgtheow in ~/Desktop/test on default at tip
$ hg branch a
marked working directory as branch a

sjl at ecgtheow in ~/Desktop/test on a at tip
$ hg branch b
marked working directory as branch b

sjl at ecgtheow in ~/Desktop/test on b at tip
$ hg branches
default                        0:aae011bc1b00

sjl at ecgtheow in ~/Desktop/test on b at tip
$ echo foo >> x

sjl at ecgtheow in ~/Desktop/test on b at tip!
$ hg com -m1

sjl at ecgtheow in ~/Desktop/test on b at tip
$ hg branches
b                              1:b66106035d8d
default                        0:aae011bc1b00 (inactive)

sjl at ecgtheow in ~/Desktop/test on b at tip
$ 

所以你的问题的答案是:“使用 hg branch branch-A 将下一次提交标记为在分支A上。“


20
2017-09-21 11:56



很棒的信息,但可能值得添加OP正在尝试做的事情:hg branch branchA;承诺branchA; hg update default; hg branch branchB,提交到branchB。关键是“hg update default”,因此branchB基于与branchA相同的提交。 - Carl Meyer
好消息,不好的解释。在ecgtheow sjl ..呃..?还有hg com,为Google员工做这个hg提交。人们不应该需要解读答案。对不起,但是-1。 - Stolas
嗨,史蒂夫,你为什么不以比现在更明确的方式在你的指南上添加这些信息?可能会改进指南。 (“hg branch X除了告诉Mercurial之外什么都不做”,我做的下一次提交应该在分支X上。“它实际上并没有”创建“分支。一个分支在它至少有一个提交之前不存在”) - Niccolò


正如Carl Meyer所说,我会选择:

hg branch branch-A
commit branch-A
hg update default
hg branch branch-B
commit branch-B

具有讽刺意味的是,我认为Steve Losh在他的指南中提供了一个更好的答案(尽管“一个分支在它至少有一个提交之前不存在”是一个非常好的提示,我将在指南中添加)。

如果你看了 关于命名分支的部分,他简要解释了它们的工作原理以及如何在它们之间切换。


0
2018-05-04 16:46





使用 'hg update -C branch-name”。


-5
2017-09-21 06:08



否。如果分支命令一个接一个地发生,则第一个分支将不存在,因为它没有提交。另外,盲目地使用-C进行更新并不是一个好主意。通常使用-c更安全,只在你真正需要时使用-C。 - Steve Losh