如何找到当前分支所跟踪的分支

6
我正在尝试找出当前分支在执行"git fetch"后将会拉取哪个分支,以及如何更改它(可以通过某些变种的“git remote”或编辑“.git/config”文件来实现)。
从哪个远程分支“git pull”获取内容?它与“git fetch”从哪里获取的内容相同吗?有没有一个git命令可以向我展示所有这些信息?
1个回答

7

要为本地分支设置已跟踪的远程分支,请使用以下命令:

git branch --set-upstream <local_branch> <remote_branch>

如果你想让本地的master跟踪origin/master,输入以下命令:

git branch --set-upstream master origin/master

然而,git fetch 会获取所有配置远程仓库的分支。

如果你有多个远程仓库(例如 originother),

git fetch other

将会获取远程的 other,同时

git fetch origin

将获取 origin

要查找正在跟踪的远程分支,打开.git/config并搜索像以下这样的条目:

[branch "mybranch"]
  remote = <remote_name>
  merge = <remote_branch>

这告诉你,你本地的分支mybranch已经配置了远程<remote_name>,并且它跟踪<remote_name>上的<remote_branch>
从远程获取哪些分支以及它们在本地仓库中的名称是在.git/config文件的以下部分中定义的。
[remote "origin"]
  fetch=+refs/heads/*:refs/remotes/origin/*
  url=<url_of_origin>

这段文字告诉你,存储在远程分支 refs/heads 下的分支会被获取并存储在本地仓库的 refs/remotes/origin/ 中。如果你在分支 mybranch 上输入 git fetch,则会获取指定在[remote <remote_name>]部分中的 <remote_name> 的修订版本。如果你输入 git pull,在获取 <remote_name> 的修订版本后,<remote_name> 的分支 <remote_branch> 将合并到 mybranch 中。有关更多信息,请参阅git branchgit fetchgit pull的说明文档。

我在寻找关于远程分支的信息,你的最后一段话(建议查看.git/config)非常有帮助。你知道这意味着什么吗?[remote "origin"] fetch = +refs/heads/:refs/remotes/origin/在我的.git/config中?git fetch是否会将所有形式为origin/refs/heads/xyz的分支带到本地远程跟踪分支refs/remotes/origin/xyz?这是否发生在所有xyz或只发生在当前分支(在其中发出git fetch)? - Yogeshwer Sharma
这太好了。一个小修改:如果你在 mybranch 上并输入 git fetch,则将获取在[remote <remote_name>]部分指定的 <remote_name> 的修订版。我认为这样是正确的,对吧? - Yogeshwer Sharma
由于某种原因,我无法说“@eckes”。它会自动删除! :-( - Yogeshwer Sharma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接