这个GIT命令有什么作用?

时间:2017-02-08 23:24:05

标签: git

我正在尝试理解这个GIT命令的作用:

git push origin master:release_candidate --force

我知道git push origin master将本地主人推送到远程来源。

我想知道:release_candidate --force部分。

2 个答案:

答案 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部分。