Вы правы.Каждая fetch
строка в вашем .git/config
файле указывает один из многих используемых по умолчанию извлекаемых refspecs Git будет использовать, поэтому:
fetch = +refs/heads/*:refs/remotes/github/*
fetch = +refs/pull/*/head:refs/remotes/github/pr/*
fetch = +refs/notes/changelog:refs/notes/changelog
предоставляет три таких refspecs.
Каждый refspec состоит из двух основных частей, разделенных двоеточием: слева - ссылка на источник, а справа - ссылка на назначение.Звездочки *
могут использоваться и действовать в основном как глобус оболочки *
(только в качестве источника; место назначения *
заменяется любым другим источником *
). Если эта пара имеет префикс со знаком плюс +
, обновление всегда принудительно (как если бы вы использовали --force
в командной строке).
Обратите внимание, что имена для удаленного отслеживаниянапример, refs/remotes/github/master
существует в удаленном пространстве: вы извлечете origin
master
в refs/remotes/origin/master
, что явно отличается от refs/remotes/github/master
.Следовательно, безопасно, по крайней мере для всех обычных целей, извлекать с силой для таких имен: вы не можете перезаписать ни свои собственные ветви, которые находятся в refs/heads/
, ни имена удаленного отслеживания других удаленных устройств.
Этоконечно, не верно для ссылок на заметки в refs/notes/
, а также для тегов в refs/tags/
, поэтому будьте осторожны с ведением +
на любом из них.