在Windows上,Git的引用问题仅在以下情况下有所不同:
$ git branch foo
$ git branch FOO
fatal: A branch named 'FOO' already exists.
$ git branch dir/foo
$ git branch DIR/bar
$ git branch --list
* develop
foo
dir/bar
dir/foo
Git可以使用文件系统将引用存储为文件foo
和bar
到目录<repository>/.git/refs/heads/dir
中来解释。
$ git branch --delete dir/bar
$ git branch --delete dir/foo
$ git branch --list
* develop
foo
旧版Git似乎在<repository>/.git/refs
中留下了一些空目录,新版Git删除了这些目录。
手动删除<repository>/.git/refs
中的空目录是否安全?
答案 0 :(得分:2)
手动删除
<repository>/.git/refs
中的空目录是否安全?
是的, 如果 ,没有其他运行。如果需要,Git将重新创建它们。
(如果正在运行Git命令,它可能会确定该目录存在并且不需要创建,然后您删除该目录,然后Git命令尝试使用您刚刚删除的目录中的文件。 )
请注意,如果您运行git pack-refs --all
,则现有的引用将合并到包含打包引用的单个文件中。这将允许您创建仅大小写不同的新引用,但不要这样做,因为当Git转到 update 引用时,它将绊倒文件系统中的大小写折叠问题
(解决方法是让Git停止使用文件系统中的文件保存参考值。我相信有一天会发生这种情况,我只是不知道何时。)