当我有3个这样的分支时:
我正在研究 feature / my-branch-1
我跑步
hg push
我要推送所有这三个分支还是仅推送工作分支(功能/ my-branch-1)?
答案 0 :(得分:3)
默认情况下,它将在所有尚未在目标存储库中的分支上推送所有变更集。
使用-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 ..
注意1:如果您使用phases,则专门推送将查找不在目的地的任何草稿或 public 更改,而仅推送那些。它不会推送任何秘密变更集。推送变更集后,变更集的阶段将更改为公开。
(您可能会取消推送公共变更集-例如,如果您明确将其阶段标记为公共阶段,或者如果您之前未使用过阶段,则转换为使用阶段。)
要点是,如果要控制要推送哪些变更集,则分阶段是一个不错的方法。您可以将所有内容默认为秘密,并且只有在准备就绪时才手动将其标记为草稿。这意味着您始终可以安全地进行提交,而不必担心会弹出尚未准备好的内容。
# 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
注意2:在某些情况下,推送可能会表现出特殊的方式。
如果您在同一分支上有多个头像 ,那么通常默认情况下,Mercurial会抱怨并且不推送任何内容。 (这可能不是OP询问的确切场景,但是在拓扑上却非常相似。)在这种情况下,每个其他头都是一个“匿名分支”。
默认情况下,推送操作将不允许在目标位置创建新的磁头, 因为有多个头会使其不清楚使用哪个头。
如果确实需要,可以通过“ 使用-f
/ --force
选项来推动多个头,这将在所有分支上推动所有新头”建议“ 几乎总是会导致
合作者的困惑” 。
第二种情况是,要推送的分支在目标中不存在。 Hg将需要额外的推动才能推动该分支:
如果要允许推送创建新的命名分支,请使用--new-branch 在目的地不存在。这样您就只能创建一个 新分支而无需进行其他更改。
(hg push --help
的文本片段)