Git 分支文件位置
Git branch file location
我的本地系统上有将近一百个分支,其中大部分都已过时。我想打开包含所有分支的文件,这样我就可以轻松删除其中的大部分,而不是费力地一个一个地删除分支。有没有办法做到这一点?一个我们可以打开以查看所有分支的文件?
在 git 中,您没有一个包含分支列表的文件,而是一个包含每个分支一个文件的目录,并以它命名。
它是 .git/refs/heads
,例如你的主分支包含文件 .git/refs/heads/master
(无扩展名),其内容是提交哈希 master
当前指向。
(注意名称中带有斜杠的分支:它们将被拆分到特定目录中,即分支 feature/new-homepage
的文件将位于子目录 feature
中, 并命名为 new-homepage
)
此外,也许检查 packed refs。要么在你的 repo 上使用它,要么检查是否有人已经打包了一些 refs。
Git 中的每个分支都由一个文本文件表示,其中包含该分支中 最新 提交的 SHA-1。这些文件称为 "references".
您可以看到分支 refs 的路径以及它们指向的相应提交 SHA-1 说:
git show-ref --heads
这将 return 类似于:
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 删除分支,无论是否已合并到当前分支。
我的本地系统上有将近一百个分支,其中大部分都已过时。我想打开包含所有分支的文件,这样我就可以轻松删除其中的大部分,而不是费力地一个一个地删除分支。有没有办法做到这一点?一个我们可以打开以查看所有分支的文件?
在 git 中,您没有一个包含分支列表的文件,而是一个包含每个分支一个文件的目录,并以它命名。
它是 .git/refs/heads
,例如你的主分支包含文件 .git/refs/heads/master
(无扩展名),其内容是提交哈希 master
当前指向。
(注意名称中带有斜杠的分支:它们将被拆分到特定目录中,即分支 feature/new-homepage
的文件将位于子目录 feature
中, 并命名为 new-homepage
)
此外,也许检查 packed refs。要么在你的 repo 上使用它,要么检查是否有人已经打包了一些 refs。
Git 中的每个分支都由一个文本文件表示,其中包含该分支中 最新 提交的 SHA-1。这些文件称为 "references".
您可以看到分支 refs 的路径以及它们指向的相应提交 SHA-1 说:
git show-ref --heads
这将 return 类似于:
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 删除分支,无论是否已合并到当前分支。