Подтвердить что ты не робот

Почему Git использует двоеточие (: <branch>) для удаления удаленной ветки

Я думаю о том, почему команда Git использует

git push <remote> :<branch> как git push origin :featureA, чтобы удалить ветвь featureA на удаленном сервере. Мне интересно, почему сделать двоеточие как флаг удаления. Это так отличается от

git branch -d <localbranch>

Почему бы не сделать что-то вроде

git branch -d --remote origin <branchname>

или есть глубокий смысл символа двоеточия, который я никогда не знаю раньше?

4b9b3361

Ответ 1

Это не значение : как таковое, а то, что присутствует, или, скорее, отсутствует перед ним.

Формат refspec

<+><source>:<destination>

(опционально + для немедленной перемотки вперед)

Итак, когда вы делаете что-то вроде git push origin :featureA, вы указываете пустой исходный код и в основном делаете пункт назначения "пустым" или удаляете его.

PS: Обратите внимание, что refspec : или ничего не означает ничего не нажимать на ничего. Он позволяет git нажимать "соответствующие" ветки: для каждой ветки, которая существует на локальной стороне, удаленная сторона обновляется, если ветвь с тем же именем уже существует на удаленной стороне.

Ответ 2

Двоеточие не является "флажком удаления". Обратите внимание, что git push и git pull оба принимают ноль или более refspecs в качестве своего последнего аргумента ( с). Теперь читаем о refspecs. Двоеточие отделяет источник от адресата в refspec. Команда git push origin :foo имеет пустой источник и, по сути, говорит "ничего не нажимать на ветвь foo происхождения" или, другими словами, "make branch foo on origin не существует".