Git分支文件位置

时间:2019-04-16 11:27:44

标签: git branch

我的本​​地系统上有近一百个分支,其中大多数已经过时。我想打开包含所有分支的文件,以便可以轻松删除其中的大多数分支,而不必费力地一一删除分支。有没有办法做到这一点?我们可以打开查看所有分支的文件吗?

2 个答案:

答案 0 :(得分:2)

Git中的每个分支由单个文本文件表示,该文本文件包含该分支中 latest 提交的SHA-1。这些文件称为"references"

您可以说以下内容来查看分支 refs 的路径以及它们指向的各自提交SHA-1:

git show-ref --heads

这将返回类似的内容:

923eccb90415758c74bb3418007bf5691a0d4a1c refs/heads/some-branch
60e2e7f120f5410ec0ba97fa5093bae4dba4ee57 refs/heads/master

现在,如果您愿意,您可以通过说出以下内容删除分支引用:

rm .git/refs/heads/some-branch

但是我不建议您直接弄乱存储库的内部结构。相反,您应该使用Git自己的命令来做到这一点。

例如,假设您要删除所有以单词feature-开头的分支。你可以说:

git branch --list 'feature-*'

以获取匹配的分支名称的列表。从那里,您可以说出这些分支:

git branch --list 'feature-*' | xargs git branch -D

-D选项告诉Git删除分支,而不管该分支是否已合并到当前分支中。

答案 1 :(得分:1)

在git中,您没有一个包含分支列表的文件,而是一个目录,每个分支包含一个文件,并以此名称精确命名。

它是.git/refs/heads,例如您的master分支由文件.git/refs/heads/master(无扩展名)组成,其内容是提交哈希master当前指向。

(请注意名称中带有斜杠的分支:它们将被拆分到特定目录中,即分支feature/new-homepage的文件将位于子目录feature中,并命名为{ {1}})


也可以检查packed refs。可以在您的仓库中使用它,或者检查是否有人已经打包了一些裁判。