Git内部:为什么.git / refs / remotes / origin /`没有所有分支

时间:2018-09-19 01:10:20

标签: git

在进行ls .git/refs/remotes/origin/时,我仅看到远程origin分支的子集。这是为什么? git branch -a具有所有分支,因此我正确地获取了它们。

1 个答案:

答案 0 :(得分:4)

Git以两种形式存储引用,它没有具体命名,但类似于打包对象,并且第二种引用形式是名为.git/packed-refs的文件,我们可以称​​ loose 包装

.git/refs/中的各个文件实际上是 loose 引用,而压缩文件则位于.git/packed-refs中。与对象不同,如果存在引用的松散版本,则它可能与打包版本不同:松散引用被认为是正确的值。这意味着在更改松散引用的值时无需删除打包的引用。

您不应该了解或关心所有这些:要读取引用的值,请使用git rev-parse(对于非符号引用)或git symbolic-ref(对于诸如{{ 1}})。要更新它们,请使用HEADgit update-ref。这些命令负责必需的锁定。