为什么Git使用
git push <remote> :<branch>
如
git push origin :featureA
featureA从远程服务器删除分支?
我对为什么将冒号用作删除标志感兴趣。
与是如此不同git branch -d <localbranch>。
我们为什么不做类似的事情
git branch -d --remote origin <branchname>
还是我不知道的冒号后面有更深的含义?
Answers:
它本身不是意义:,而是存在的东西,或者在它之前不存在的东西。
refspec格式为
<+><source>:<destination>
(可选+用于非快进)
因此,当您执行类似的操作时git push origin :featureA,您将指定一个空的源引用,并基本上将目标设置为“空”或将其删除。
PS:请注意,refspec为:or no并不意味着什么都不做。它使git推送“匹配的”分支:对于在本地存在的每个分支,如果在远端已经存在相同名称的分支,则对远端进行更新。
git push origin -d <branch>了Git> = 1.7.0以删除并git push origin -D <branch>强制删除远程分支。
冒号不是“删除标志”。注意git push和git pull都接受零个或多个refspecs作为它们的最终参数。现在阅读有关refspec的信息。冒号在refspec中将源与目标分开。该命令git push origin :foo的源为空,本质上说“不向源分支foo推送任何内容”,换句话说,“使源分支foo不存在”。
:foo。空分支不会与现有远程分支共享历史记录,因此,按照我的看法,它无法用空分支覆盖现有远程分支。您的答案有误。
git push origin --delete foobar