Git存储远程跟踪分支的位置在哪里?

13

我有两个 Git 仓库 repo1repo2。在 repo1 中有三个分支 masteralphabetarepo2 是从 repo1 克隆而来。

repo2 中,我可以通过 git branch -a 命令查看远程跟踪分支:

remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/alpha
remotes/origin/beta

但是在repo2中的文件夹.git/refs/remotes/origin/只有一个名为HEAD的单个文件,其内容为:

ref: refs/remotes/origin/master
所以这个HEAD是一个符号引用。但是为什么它指向一个不存在的引用?另外,repo2在哪里存储了alphabeta的信息呢?(repo2知道alphabeta是因为在git branch -a中显示了它们。)

你正在运行哪个版本?你是执行了 initfetch,还是只执行了 clone?我问这个问题是因为有一些设置可以用于默认获取什么内容。 - Philip Oakley
这些都在同一台机器上吗?你的安装是否使用符号链接而不是真正的第二份副本? - Philip Oakley
@PhilipOakley 他们在同一台机器上。答案已经在下面指出。我忘记了 packed-refs 的问题... - Cyker
2个回答

15

这些引用(refs)可能被“打包”在.git/packed-refs中。


4
git help pack-refs可以澄清一切。谢谢! - Cyker

6

这些信息存储在.git/config文件中,当你添加或修改远程仓库时,像git remote这样的工具会更新它们。关于这方面的详细配置,请参考git-config手册。如果你搜索“跟踪分支”,你将看到如何配置它们的细节。


3
这是错误的。远程跟踪分支不会存储在.git/config文件中。所有分支都存储在.git/refs/.git/packed-refs中。只有本地分支和fetch以及push refspec的跟踪元数据存储在.git/config中。 - CB Bailey
@CharlesBailey: 在问题中,“tracking”一词似乎是请求中最具体的部分,因此我重点关注了跟踪元数据。 - Ben Jackson
这解决了我的问题:Visual Studio 2013当前分支没有配置上游分支。 - JohnWrensby

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