Git分支文件位置
在我的本地系统中,我有将近一百家分支机构,其中大多数已经过时。我想打开包含所有分支的文件,这样我就可以轻松地删除大部分分支,而不是费力地逐个删除分支。有办法吗?一个我们可以打开以查看所有分支的文件?在git中,您没有一个包含分支列表的文件,而是一个包含每个分支一个文件的目录,每个分支都以该文件命名 它是Git分支文件位置,git,branch,Git,Branch,在我的本地系统中,我有将近一百家分支机构,其中大多数已经过时。我想打开包含所有分支的文件,这样我就可以轻松地删除大部分分支,而不是费力地逐个删除分支。有办法吗?一个我们可以打开以查看所有分支的文件?在git中,您没有一个包含分支列表的文件,而是一个包含每个分支一个文件的目录,每个分支都以该文件命名 它是.git/refs/heads,例如,您的主分支由文件.git/refs/heads/master(无扩展名)组成,其内容是当前指向的提交哈希master (请注意名称中带有斜杠的分支:它们将被拆
.git/refs/heads
,例如,您的主分支由文件.git/refs/heads/master
(无扩展名)组成,其内容是当前指向的提交哈希master
(请注意名称中带有斜杠的分支:它们将被拆分到特定目录中,即分支功能/新主页
的文件将位于子目录功能
,并命名为新主页
)
还有,也许可以检查一下。可以在回购中使用它,也可以检查是否有人已经打包了一些引用。Git中的每个分支都由一个文本文件表示,其中包含该分支中最新提交的SHA-1。这些文件称为 您可以看到分支引用的路径以及它们所指向的各个commit SHA-1,方法是:
git show-ref --heads
rm .git/refs/heads/some-branch
git branch --list 'feature-*' | xargs git branch -D
这将返回类似于:
923eccb90415758c74bb3418007bf5691a0d4a1c refs/heads/some-branch
60e2e7f120f5410ec0ba97fa5093bae4dba4ee57 refs/heads/master
现在,如果您想删除分支引用,可以说:
git show-ref --heads
rm .git/refs/heads/some-branch
git branch --list 'feature-*' | xargs git branch -D
但我不建议直接破坏存储库的内部结构;相反,您应该使用Git自己的命令来实现这一点
例如,假设您想要删除所有以单词feature-
开头的分支。你可以说:
git branch --list 'feature-*'
以获取匹配分支名称的列表。从那里,您可以通过以下方式删除这些分支:
git show-ref --heads
rm .git/refs/heads/some-branch
git branch --list 'feature-*' | xargs git branch -D
该选项告诉Git删除分支,无论其是否已合并到当前分支。直接操作回购的内部结构通常不是一个好主意,因为它可能会使回购处于损坏状态。使用Git自己的命令可以保证一切都是一致的。@Enricoampidoglio我并不主张这样做。我也认为使用git命令来做这件事是更好的实践。这就是我对你的答案投赞成票的原因。