推动+掌握与力推

时间:2015-05-06 02:41:49

标签: git github

当我与GitHub上的上游项目重新同步时,我认为我需要强制推送。但是,推送到+master似乎也有效。

有什么区别:

git push origin +master

git push --force origin master

一个人比另一个人危险吗?

2 个答案:

答案 0 :(得分:5)

来自Git documentation

  

请注意, - force适用于所有推送的引用,因此将push.default设置为匹配或使用配置了remote。*。push的多个推送目标时使用它可以覆盖当前分支以外的引用(包括本地) refs严格落后于他们的远程对手)。要强制推送到一个分支,请使用refspec前面的+来推送

git push origin +mastergit push --force origin master都会执行相同的事情,因为在后一种情况下,您只指定一个参考。

Git创建的任何内容都不是邪恶的,当你想要覆盖远程分支时,执行Git强制推送是合适的。您想要执行此操作的一个示例是在某个其他分支上重新定位个人功能分支,然后将其推送到存储库之后。

答案 1 :(得分:1)

+master语法相当于使用--force,但它更灵活。例如,您可以写

git push origin master +pu

如果您想强制推送分支pu并推送master而不强制推送。

如果您不知道自己在做什么,这两个版本都具有同等的危险性。

如果您没有指定推送哪个分支,并且您不确定如何配置--force,那么

push.default可能会有危险。例如

git push --force
如果你有push.default=matching

可以回卷一个不是当前分支的分支(这是将push.default的默认值更改为simple的动机之一)。例如,如果您当前位于要强制推送的分支dev上,并且您还有一个分支master与上游不一致,那么使用push.default=matchinggit push --force会倒回master并更新您的dev分支。