我正在尝试理解这个GIT命令的作用:
git push origin master:release_candidate --force
我知道git push origin master
将本地主人推送到远程来源。
我想知道:release_candidate --force
部分。
答案 0 :(得分:4)
:release_candidate
部分是远程refspec。这样做是将名为master
的 分支推送到名为release_candidate
的远程分支。通常,如果没有:
,则将本地分支推送到具有相同名称的远程分支。
--force
选项即使这样做也会丢失远程提交。如果您想要做的是强行覆盖之前release_candidate
分支中的任何内容,这很好。
答案 1 :(得分:1)
让我们阅读documentation并提取解释您命令的部分:
git push [-f | --force] [<repository> [<refspec>…]]
(我省略了问题中没有的无数选项)
选项强>
<repository>
&#34;遥控器&#34;作为推送操作目标的存储库。此参数可以是URL或远程名称。
refspec>…
使用什么源对象指定要更新的目标ref。
<refspec>
参数的格式是可选加+
,后跟源对象<src>
,后跟冒号:
,后跟目标引用{{1} }。
<dst>
通常是您想要推送的分支的名称,但它可以是任意&#34; SHA-1表达式&#34;,例如<src>
或{{ 1}}
master~4
通过此推送告知远程端的哪个ref更新。这里不能使用任意表达式,必须命名实际的ref。
HEAD
引用的对象用于更新远程端的<dst>
引用。默认情况下,只有<src>
不是标记(带注释或轻量级),并且只有当它可以快进<dst>
时才允许这样做。
...
<强> -f 强>
的 - 力强>通常,该命令拒绝更新远程ref,该远程ref不是用于覆盖它的本地ref的祖先。 [...]
此标志禁用这些检查,并可能导致远程存储库丢失提交;小心使用它。
总结一切,你的命令:
<dst>
使用本地分支<dst>
更新git push origin master:release_candidate --force
远程分支master
。如果本地分支release_candidate
是远程分支origin
的后代,则不需要master
标志。否则,如果没有origin/release_candidate
,则推送将被远程服务器拒绝。
有关使用--force
时会发生什么的详细讨论(有示例),请阅读文档中的Notes about fast forwards部分。