git config remote.origin.fetch
покажет вам "refspec", который отображает имена ссылок на пульте origin
в локальную "ветку удаленного отслеживания" refs.
По умолчанию
+refs/heads/*:refs/remotes/origin/*
и он говорит, что нужно извлечь все ссылки на источник, которые запускают "refs /heads" и заменить текст *
'd в локальном переписывании, поэтому refs/heads/master
*
равно master
, и вот что получает вставку для *
в локальной ссылке, «ветке удаленного отслеживания» ref 1 .
В файле конфигурации указывается, из какого хранилища вышла ветка ветки, и каково имя в этом хранилище. Когда вы перебираете, извлекаете или объединяете неявный апстрим, Git просматривает имя ветви и refspec для его исходного репо, обычно origin
, и выясняет, какой ref будет отображаться в этом репозитории.
So
[branch "master"]
remote = origin
merge = refs/heads/master
[remote "origin"]
url = git://github.com/git/git
fetch = +refs/heads/*:refs/remotes/origin/*
локальная ветвь master
отслеживает origin
ветвь master
и извлекает из origin
отображает эту ветвь здесь на refs/remotes/origin/master
здесь, так что это история rebease и pull и, вероятно, некоторые другие проверяют по умолчанию чтобы найти, где или разошлись ли истории.
1 Ведущий +
просто означает «не жалуйся, если выборка откажется от истории», что, конечно, именно так, как вы хотите, чтобы выборка работала, когда вы просто отслеживаете, что происходит с рефами пульта. Посмотрите документы выборки для большего количества его поведения по умолчанию, например. есть моменты, когда вы хотите получить теги, времена, когда вы не