何时在存储库中创建新头?

时间:2015-06-22 19:52:21

标签: mercurial

我假设这是一个奇怪的问题,但我不确定何时为存储库创建了一个新头,例如在这个问题中:

解释哪条线导致任何引用的存储库中的磁头数量发生变化

1:/ home / user> hg clone http://remoteserver/mainrepository clone1

2:/ home / user> hg clone http://remoteserver/mainrepository clone2

3:/ home / user> cd clone1

4:/ home / user / clone1> echo one> a.txt#创建一个包含“one”的新文件“a.txt”

5:/ home / user / clone1>回声二> b.txt#创建一个包含“two”的新文件“b.txt”

6:/ home / user / clone1> echo 3> c.txt#创建一个包含“three”的新文件“c.txt”

7:/ home / user / clone1> hg添加a.txt b.txt c.txt

8:/ home / user / clone1> hg commit -m"添加文件"

9:/ home / user / clone1> cd ../ clone2

10:/ home / user / clone2> echo none> a.txt#创建一个包含“none”的新文件“a.txt”

11:/ home / user / clone2> echo none> b.txt#创建一个包含“none”的新文件“b.txt”

12:/ home / user / clone2> echo none> c.txt#创建一个包含“none”的新文件“b.txt”

13:/ home / user / clone2> hg添加a.txt

14:/ home / user / clone2> hg commit -m"一个文件"

15:/ home / user / clone2> hg add b.txt

16:/ home / user / clone2> hg commit -m"另一个文件"

17:/ home / user / clone2> hg pull ../ clone1

18:/ home / user / clone2> hg add c.txt

19:/ home / user / clone2> hg commit -m"第三个文件"

20:/ home / user / clone2> hg push -f

21:/ home / user / clone2> cd ../ clone1

22:/ home / user / clone1> hg push -f

23:/ home / user / clone1> hg pull

我不是在寻找这个问题的具体答案,只是一些能帮助我了解它何时发生以及原因的关键。

提前致谢!

1 个答案:

答案 0 :(得分:3)

可以通过三种方式创建新头:

  • 当您需要在推送命令上使用--force时,会在您推送到的存储库上创建一个新头。提示:当你不必使用时,千万不要使用--force(或其等效的-f)
  • 当你提交一个不是分支头的变更集时;因此,如果你承诺一个有孩子的变更集。
  • 当您从存储库中提取时,该存储库会在您本地已有子项的变更集之上添加新的变更集。

在您的情况下,步骤#22将向远程存储库引入新头。步骤#20中的push --force并没有帮助您看到它只发生在#22中,因为您系统地静音了正在创建新头的mercurials提示。

当您合并不同的头(或rebase - 但不会传播,除非在非发布存储库和阶段< public之类的特定条件下),头数会减少。