【问题标题】:When does a new head is created in a repository?何时在存储库中创建新头?
【发布时间】:2015-09-08 09:59:35
【问题描述】:

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

解释在任何引用的存储库中哪些行导致磁头数发生变化

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> echo two > b.txt # 创建一个包含“two”的新文件“b.txt”

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

7: /home/user/clone1> hg add 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 add 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

我不是在寻找这个问题的具体答案,只是一些有助于我理解它何时发生以及为什么发生的关键。

提前致谢!

【问题讨论】:

    标签: mercurial


    【解决方案1】:

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

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

    在您的情况下,第 22 步将向远程存储库引入一个新头。第 20 步中的 push --force 并不能帮助您看到它只发生在第 22 步中,因为您系统地静音 mercurials 暗示正在创建一个新的头部。

    当您合并不同的头时,头的数量会减少(或变基 - 但不会传播,除非在非发布存储库和阶段

    【讨论】:

      猜你喜欢
      • 2019-02-14
      • 1970-01-01
      • 2017-10-16
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 2014-02-22
      相关资源
      最近更新 更多