Mercurial是推动所有本地分支机构还是仅推动工作分支机构?

use*_*537 2 mercurial

当我有3个这样的分支时:

  • 功能/我的分支1
  • 功能/我的分支2
  • 功能/我的分支3

我正在研究feature / my-branch-1

一旦我跑步

hg push
Run Code Online (Sandbox Code Playgroud)

我要推送所有这三个分支还是仅推送工作分支(功能/ my-branch-1)?

Dav*_*Caz 5

默认情况下,它将在所有尚未存储在目标存储库中的分支上推送所有变更集。

您可以使用以下-b选项仅推送选定的分支:

# hg push --help
hg push [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]

push changes to the specified destination

    Push changesets from the local repository to the specified destination.
...
options ([+] can be repeated):

..
 -b --branch BRANCH [+]     a specific branch you would like to push
..
Run Code Online (Sandbox Code Playgroud)

注意1:如果您使用阶段,则专门推送将查找不在目标位置的任何草稿或公共更改,而仅推送那些。它不会推送任何秘密变更集。推送变更集后,变更集的阶段将更改为公开。

(您可能会取消推送公共变更集-例如,如果您明确将其阶段标记为公共阶段,或者如果您之前未使用过阶段,则转换为使用阶段。)

重要的是,如果您想控制要推送哪些变更集,则分阶段是一个不错的方法。您可以将所有内容默认为秘密,并且只有在准备就绪时才手动将其标记为草稿。这意味着您始终可以安全地进行提交,而不必担心会弹出尚未准备好的内容。

# hg phase --help                                                               
hg phase [-p|-d|-s] [-f] [-r] [REV...]                                          

set or show the current phase name                                              
...                                                                                
options ([+] can be repeated):                                                  

 -p --public      set changeset phase to public                                 
 -d --draft       set changeset phase to draft                                  
 -s --secret      set changeset phase to secret                                 
 -f --force       allow to move boundary backward                               
 -r --rev REV [+] target revision
Run Code Online (Sandbox Code Playgroud)

注意2:在某些情况下,推送可能会以特殊方式起作用。

如果您在同一分支上有多个负责人,那么通常默认情况下,Mercurial会投诉而不进行任何操作。(这可能不是OP询问的确切场景,但在拓扑上却非常相似。)在这种情况下,每个其他头都是一个“匿名分支”。

默认情况下,推入将不允许在目标位置创建新的磁头,因为多个磁头将使其不清楚要使用哪个磁头。

如果确实需要,可以使用-f/ --force选项 “将多个头推入,这将建议所有分支上的所有新头推入 ”,这建议“ 几乎总是会使合作者感到困惑”。

第二种情况是,您要推送的分支在目标中尚不存在。Hg将需要额外的推动才能推动该分支:

如果要允许推送创建目标处不存在的新命名分支,请使用--new-branch。这使您仅可以创建一个新分支,而无需强制其他更改。

(来自的文本摘要hg push --help)