为什么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”。