为什么“git push git push origin local-branch:development”会删除远程开发分支?

时间:2017-09-14 08:03:34

标签: git

为什么“git push git push origin local-branch:development”会删除远程开发分支?

jackiewillen  ~/Documents/work/  git push origin yrh-deskmonitor-20170905 :development
Enter passphrase for key '.ssh/id_rsa':
To ssh://git.dianpingoa.com/ed-f2e/gandalf-plus.git
 - [deleted]         development

我尝试“推送本地分支:开发”是可以的!分号上有问题;分号之前的空格是不同的。为什么?

2 个答案:

答案 0 :(得分:2)

问题是yrh-deskmonitor-20170905 :development

之间的空格

您已按原样推送yrh-deskmonitor-20170905并删除development分支

可能,你希望运行

git push origin yrh-deskmonitor-20170905:development

代替。

git push的语法是这样的:

git push <target> <refspec1> <refspec2> <refspec3>

其中所有<refspec>s彼此独立,每个<branch-or-tag-name>可能采用以下形式:

  1. <local-refname>:<remote-branch-name>
  2. :<branch-or-tag-name>
  3. refs/...
  4. 各种&#34; hacks&#34;当指定名称以development开头的远程引用时。

    • 案例1用于在远程仓库中创建直接对应于本地仓库中分支的分支。这是最自然的&#34;的使用。
    • 案例2用于在远程仓库中创建一个分支,其名称与本地名称不同(我想,你的情况)
    • 案例3用于删除远程仓库中的给定分支。
    • 案例4允许创建无符号标签,不同的遥控器和其他类型的黑客,可以描述为&#34;低级&#34;。
  5. 不用担心,您仍然可以通过发布git push <target> yrh-deskmonitor-20170905:development

    重新创建{{1}}分支(几乎)而不会造成伤害

答案 1 :(得分:1)

来自git push的documentation

  git push origin:experimental
  找到与实验相符的参考文献   原始存储库(例如refs / heads / experimental),并删除它。