在BitBucket Server计算机上的裸仓库(无工作文件夹)中,我有两个发行分支:
select * from orders
但是,如果我查看# git branch --list | grep release
warning: ignoring broken ref refs/heads/integration/Team
release/2018r1
release/2018r2
,这些分支都看不到:
refs/heads
# ls refs/heads/release
testing
分支是前一段时间已删除的分支。
testing
和release/2018r1
如何存在(并被release/2018r2
看到)却不出现在git branch --list
中?
为什么旧的refs/heads
分支不再存在时会显示在release/testing
中?
答案 0 :(得分:2)
引用名称可以打包(存储在普通文件.git/packed-refs
中)或 unpacked (每个文件存储一个)。同时存在未打包和已打包的引用将其当前值存储在未打包的副本中,即打包的副本不会自动删除。
在这种情况下,无疑会打包两个“不可见”引用。我不清楚refs/heads/release/testing
到底是怎么回事。
Git的未来版本可能会完全停止将参考名称存储在纯文本文件中,因为文件名称在Windows和MacOS文件系统上存在大小写折叠的问题。使用git for-each-ref
和git update-ref
(及类似方法)读取和写入参考值,以便为将来使用实际键值数据库的Git准备。