我的本地系统上有近一百个分支,其中大多数已经过时。我想打开包含所有分支的文件,以便可以轻松删除其中的大多数分支,而不必费力地一一删除分支。有没有办法做到这一点?我们可以打开查看所有分支的文件吗?
答案 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。可以在您的仓库中使用它,或者检查是否有人已经打包了一些裁判。