当强制推动变化时,这两个git命令有什么区别?
git push -f origin branch 和 git push origin +branch
jub*_*0bs 49
如果你只是推动一个分支,那就没有区别了.
git push -f origin branch
Run Code Online (Sandbox Code Playgroud)
和
git push origin +branch
Run Code Online (Sandbox Code Playgroud)
是确切的等价物.当您用一个分支推送多个分支时会出现差异git push.
简而言之,可选+为您提供了更精细的控制比-f呢:如果你在同一时间推出一个以上的裁判,将+允许你指定其推裁判的获取力推动,而--force(或-f)适用于所有裁判正在被推动.
git-push男人页面告诉你最基本的形式git push涉及一个或多个refspec(s)
git push <repository> <refspec>...
Run Code Online (Sandbox Code Playgroud)
<refspec>...参数必须满足的形式在git-push手册页中描述:
<refspec>...Run Code Online (Sandbox Code Playgroud)Specify what destination ref to update with what source object. The format of a `<refspec>` parameter is an optional plus `+`, followed by the source object `<src>`, followed by a colon `:`, followed by the destination ref `<dst>`.
所以,只是要清楚,语法<refspec>是
[+]<src>[:<dest>]
Run Code Online (Sandbox Code Playgroud)
如果:<dst>省略,则相同的ref <src>将被更新...除非remote.<repository>.pushGit配置中的条目(如果有)另有说明.
git-push你会发现在手册页的下方
通过具有可选的领导
+,你可以让Git更新<dst>,即使它是默认不允许的REF(例如,它不是一个快进.)这并不试图合并<src>成<dst>.
还有更进一步:
请注意,
--force适用于所有被推送的引用,因此使用它push.default设置为matching或配置了多个推送目标remote.*.push可能会覆盖当前分支以外的引用(包括严格落后于其远程对应的本地引用).要强制推送到一个分支,请使用+refspec前面的推进(例如git push origin +master,强制推动master分支).
考虑一个带有两个分支的本地仓库,master并且develop您希望将其(使用单个git push命令)推送到origin远程.
git push origin master develop 将推动两个分支,但都不会被推动.
git push origin +master develop将推动两个分支,但只会master被强制推动.
git push origin master +develop相反,将推动两个分支,但只会develop被强制推动.
git push origin +master +develop将强行推动两个分支.它完全等同于git push -f origin master develop.
| 归档时间: |
|
| 查看次数: |
3653 次 |
| 最近记录: |