18

如果我在没有跟踪任何远程分支的本地分支上,我给出命令

git fetch

鉴于我在 中定义了几个遥控器$GIT_DIR/config,从哪个遥控器完成提取?

我试图从手册页中找出答案,但这一点我不清楚。

另外:如何在不进行本地分支跟踪的情况下更改此默认远程?

4

4 回答 4

17

如果您有多个远程存储库,并且未指定任何远程存储库名称,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

于 2013-05-30T14:01:22.753 回答
4

在您的项目文件夹中,当您在第一步初始化 git 时,会创建 .git 文件夹。

在此文件夹中查找名为 config 的文件,它包含所有分支信息。原点用作默认值。

  [remote "origin"]
      fetch = +refs/heads/*:refs/remotes/origin/*
      url = git@github.com:project.git

所以代码是从这里列出的 url 中获取的。

于 2013-05-30T15:53:13.950 回答
2

它将获取原始远程。GIT clone这是您执行命令的第一个遥控器 。

于 2013-05-30T13:59:48.223 回答
0

以下是一些别名,它们将提供可以以编程方式使用的字符串:

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\" #"
于 2018-10-21T08:48:54.827 回答