如何清理由“git update ref”创建的文件和目录?

如何清理由“git update ref”创建的文件和目录?,git,Git,如果我使用git update ref创建一个ref,在某些情况下git update ref-d似乎不允许我在它之后进行清理 示例#1 git update ref-d不允许我删除之外的引用。git/refs/: $git更新ref foo HEAD $cat.git/foo 2245AC4343404174F50638321925A7D49747DF622 $git更新参考-d foo 错误:拒绝使用错误名称“foo”更新ref 示例2 git update ref-d不会删除现在为空的r

如果我使用
git update ref
创建一个ref,在某些情况下
git update ref-d
似乎不允许我在它之后进行清理

示例#1
git update ref-d
不允许我删除
之外的引用。git/refs/

$git更新ref foo HEAD
$cat.git/foo
2245AC4343404174F50638321925A7D49747DF622
$git更新参考-d foo
错误:拒绝使用错误名称“foo”更新ref
示例2
git update ref-d
不会删除现在为空的
refs/子目录

$git更新参考文件/foo/bar/baz头
$git更新参考-d参考/foo/bar/baz
$ls-a.git/refs/foo
./      ../

我是否需要手动删除
.git/foo
.git/refs/foo
(例如分别使用
rm
rmdir

除了特殊的引用,例如
HEAD
,所有引用都应该以
refs/
开头,因此,您应该始终为
git update ref
指定一个完全限定的引用名。这是一个管道命令,因此它假定您知道如何正确使用它

在这种特殊情况下,您可以删除使用
rm
创建的错误引用,但通常应首先避免创建此类引用

至于额外的目录,它是无害的,不需要清理。你可以忽略它


请注意,并非所有引用都存储在单个文件中,因此您应该更喜欢使用
git update ref
或类似的git命令。上游正在考虑添加对reftable格式的支持,因此在某些存储库中,ref可能根本不存在于单个文件中。

在我看来,
git update ref
假设我知道我在做什么,如果我做
git update ref foo
,而不是当我做
git update ref-d时foo
=/在某些情况下,它也无法让您更新它。一般来说,直接删除或覆盖
.git
目录下的文件风险更大,因为您可以删除
.git/config
等重要内容。创建无用的文件是愚蠢的,但不会破坏东西。