为什么Git使用冒号(:<branch>)来删除远程分支
我正在考虑为什么Git命令使用
git push <remote> :<branch>
像git push origin :featureA
删除远程服务器中的featureA分支。 我很感兴趣,为什么把冒号作为删除标志。 这是如此的不同
git branch -d <localbranch>
为什么不这样做
git branch -d --remote origin <branchname>
还是有我以前从不知道的冒号的深刻含义?
这本身并不是这个意思,而是现在或者在它之前缺less的东西。
refspec格式是
<+><source>:<destination>
(可选+非快进)
所以,当你做一些像git push origin :featureA
,你需要指定一个空的源代码,并且基本上把目标设置为“空”或者删除它。
PS:请注意,refspec :
或者什么也不代表什么也不能。 它使得git推送“匹配”分支:对于本地存在的每个分支,如果在远程端已经存在相同名称的分支,则更新远程端。
冒号不是“删除标志”。 请注意, git push和git pull都接受零个或多个refspecs作为它们的最终参数。 现在阅读关于refspecs 。 冒号在refspec中将源和目标分开。 git push origin :foo
这个命令有一个空的来源,实质上是说“push nothing to foo of origin”,或者换句话说,“make foo on origin not exist”。