Пульт по умолчанию для git fetch

Если я нахожусь в локальной ветке, которая не отслеживает удаленные ветки, и я даю команду

git fetch

Учитывая, что у меня есть несколько пультов, определенных в $GIT_DIR/config, из которых удаляется извлечение?

Я попытался выяснить из man page, но этот момент мне неясен.

Дополнительно: как я могу изменить этот пульт по умолчанию без отслеживания локального ветки?

Ответ 1

Если у вас несколько удаленных репозиториев и не указывается имя удаленного репозитория, по умолчанию будет использоваться origin. Если нет удаленного репозитория с именем origin, то он будет ошибочно говорить

fatal: No remote repository specified.  Please, specify either a URL or a
remote name from which new revisions should be fetched.

Дополнительно: как я могу изменить этот пульт по умолчанию без отслеживания локального ветки?

Вы можете переименовать это имя репозитория в 'origin', чтобы сделать его по умолчанию.

Осторожно: это не будет работать, если текущая ветка уже имеет восходящий поток, указанный на другом пульте. Из git help fetch: "Если не указано ни одного удаленного устройства, по умолчанию используется пусковой источник, если только ветвь восходящего потока не настроена для текущей ветки". В этом случае вы можете изменить ветки восходящего потока, чтобы использовать origin, отредактировав поля remote для веток, настроенных в .git/config.

Ответ 2

Будет извлечен пусковой источник. Это пульт frist, который вы выполнили GIT clone.

Ответ 3

В папке проекта при инициализации git на первом этапе создается папка .git.

Посмотрите на эту папку для файла с именем config, она содержит всю информацию о филиале. origin используется по умолчанию.

  [remote "origin"]
      fetch = +refs/heads/*:refs/remotes/origin/*
      url = [email protected]:project.git

Таким образом, код извлекается из URL-адреса, указанного здесь.

Ответ 4

Вот некоторые псевдонимы, которые будут давать строки, которые могут быть использованы программно:

branch-name = "symbolic-ref --short HEAD"  # https://stackoverflow.com/a/19585361/5353461
branch-remote-fetch = !"branch=$(git branch-name \"$1\") && git config branch.\"$branch\".remote || echo origin #"
branch-remote-push  = !"branch=$(git branch-name \"$1\") && git config branch.\"$branch\".pushRemote || git config remote.pushDefault || git branch-remote-fetch #"
branch-url-fetch = !"remote=$(git branch-remote-fetch \"$1\") && git remote get-url        \"$remote\" #"  # cognizant of insteadOf
branch-url-push  = !"remote=$(git branch-remote-push  \"$1\") && git remote get-url --push \"$remote\" #"  # cognizant of pushInsteadOf

Если вы хотите найти удаленный доступ для другого ветки, замените branch-name выше следующим: разрешите передавать один аргумент:

branch-current = "symbolic-ref --short HEAD"  # https://stackoverflow.com/a/19585361/5353461
branch-names = !"[ -z \"$1\" ] && git branch-current 2>/dev/null || git branch --format='%(refname:short)' --contains \"${1:-HEAD}\" #"  # https://stackoverflow.com/a/19585361/5353461
branch-name = !"br=$(git branch-names \"$1\") && case \"$br\" in *$'\\n'*) printf \"Multiple branches:\\n%s\" \"$br\">&2; exit 1;; esac; echo \"$br\" #"