我们在共享模式下创建了git bare,并通过克隆git bare创建了数据存储库。
由于git bare repo和git data repo都位于同一个文件系统上,因此目标文件似乎是硬链接以节省空间。
我想立即备份git裸存储库并删除数据存储库。
由于目标文件被硬链接,我担心删除数据存储库会使裸存储库处于失效状态。
有没有办法可以复制硬链接到裸仓库的数据仓库中的所有目标文件,以便我可以删除数据仓库并备份仓库?
非常感谢您的帮助。
答案 0 :(得分:3)
这不是Git的特色。这正是硬链接一直工作的方式(与软链接/符号链接相反,后者在链接文件和链接到的文件之间有明显的区别)。这也是硬链接在一台机器中跨文件系统边界工作的原因。这也是为什么在类似UN * X的系统中删除文件的函数(在几种编程语言中)通常被称为" unlink"而不是"删除"。
当然,由于文件内容仅存储在光盘上一次,因此如果您编辑其中一个,则两个副本都将更改。但这没问题。如果只有添加它们(并且偶尔在垃圾收集中删除(=取消链接)它们),则在对象数据库中Git 从不 _changes_文件。由于Git中的目标文件是不可变的,因此它们与其他不可变文件硬链接这一事实并不重要(除了节省磁盘空间),这就是为什么-l选项现在是git-clone中的默认选项。