什么时候在存储库中创建一个新头?
When does a new head is created in a repository?
我假设这是一个奇怪的问题,但我不确定何时为存储库创建一个新的 head,例如在这个问题中:
解释在任何引用的存储库中哪一行导致头数发生变化
1: /home/user> hg 克隆 http://remoteserver/mainrepository 克隆 1
2: /home/user> hg 克隆 http://remoteserver/mainrepository 克隆 2
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 "Added files"
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 "one file"
15: /home/user/clone2> hg 添加 b.txt
16: /home/user/clone2> hg commit -m "another file"
17: /home/user/clone2> hg pull ../clone1
18: /home/user/clone2> hg 添加 c.txt
19: /home/user/clone2> hg commit -m "a third file"
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
我不是在寻找这个问题的具体答案,只是一些关键点可以帮助我了解它何时发生以及为什么发生。
提前致谢!
可以通过三种方式创建新头像:
- 当您需要在推送命令上使用
--force
时,将在您推送到的存储库上创建一个新头。提示:当你不需要 时,切勿将 --force
(或等效的 -f)与推送一起使用
- 当您提交到不是分支头的变更集时;因此,如果您提交一个有子项的变更集。
- 当您从存储库中拉取时,该存储库会在您本地已有子项的变更集之上添加新的变更集。
在您的情况下,第 22 步将向远程存储库引入一个新头。步骤 #20 中的 push --force
并没有帮助你看到它只发生在 #22 中,因为你因此系统地使 mercurials 静音暗示正在创建一个新的头部。
当您合并不同的 head 时,head 的数量会减少(或 rebase - 但除非在特定条件下,如非发布存储库和阶段 < public,否则不会传播)。
我假设这是一个奇怪的问题,但我不确定何时为存储库创建一个新的 head,例如在这个问题中:
解释在任何引用的存储库中哪一行导致头数发生变化
1: /home/user> hg 克隆 http://remoteserver/mainrepository 克隆 1
2: /home/user> hg 克隆 http://remoteserver/mainrepository 克隆 2
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 "Added files"
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 "one file"
15: /home/user/clone2> hg 添加 b.txt
16: /home/user/clone2> hg commit -m "another file"
17: /home/user/clone2> hg pull ../clone1
18: /home/user/clone2> hg 添加 c.txt
19: /home/user/clone2> hg commit -m "a third file"
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
我不是在寻找这个问题的具体答案,只是一些关键点可以帮助我了解它何时发生以及为什么发生。
提前致谢!
可以通过三种方式创建新头像:
- 当您需要在推送命令上使用
--force
时,将在您推送到的存储库上创建一个新头。提示:当你不需要 时,切勿将 - 当您提交到不是分支头的变更集时;因此,如果您提交一个有子项的变更集。
- 当您从存储库中拉取时,该存储库会在您本地已有子项的变更集之上添加新的变更集。
--force
(或等效的 -f)与推送一起使用
在您的情况下,第 22 步将向远程存储库引入一个新头。步骤 #20 中的 push --force
并没有帮助你看到它只发生在 #22 中,因为你因此系统地使 mercurials 静音暗示正在创建一个新的头部。
当您合并不同的 head 时,head 的数量会减少(或 rebase - 但除非在特定条件下,如非发布存储库和阶段 < public,否则不会传播)。