当我与GitHub上的上游项目重新同步时,我认为我需要强制推送。但是,推送到+master
似乎也有效。
有什么区别:
git push origin +master
和
git push --force origin master
一个人比另一个人危险吗?
答案 0 :(得分:5)
请注意, - force适用于所有推送的引用,因此将push.default设置为匹配或使用配置了remote。*。push的多个推送目标时使用它可以覆盖当前分支以外的引用(包括本地) refs严格落后于他们的远程对手)。要强制推送到一个分支,请使用refspec前面的+来推送
git push origin +master
和git 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=matching
, git push --force
会倒回master
并更新您的dev
分支。