我想使用 Git 创建外部备份系统。
这部分是受到答案的启发在外部磁盘上备份整个 git 存储库的最佳方法是什么? https://stackoverflow.com/a/4372855/2533127,其中建议如下:
您还可以通过启动一个新的存储库来获得增量备份
外部磁盘(git克隆),然后每次拉取更改
(git拉)。备份和备份没有太大区别
分布式系统(如 git)中的工作副本。
(为了方便起见,我在外部使用了一个裸存储库。)
我的困境是:在我备份到外部的分区上,我有一些子目录,它们本身就是 git 存储库,每个子目录都有远程存储库的上游。
换句话说,通过 ascii art:
upstream
external ----------> partition
| upstream
+----- subdirectory ----------> remote
本身受版本控制的子目录在我的外部显示为空。
我希望 git 不要跳过这些目录,而是也提取版本化子目录的内容。
我想知道子模块是否与这里相关,但文档很困难。 (我从未找到子模块的定义 - 或示例 - 表明它可能适合我的情况。)
At Git 忽略子目录中的 .git 目录 https://stackoverflow.com/q/2703290/2533127,问题包括行
Git 不允许我添加子目录 .git 文件夹。
这些回应令人沮丧,他们向我暗示 git 的设计初衷并不是包含此功能。
但我充满希望。
子模块是在父存储库中记录为的存储库gitlinks(索引中的特殊条目,模式 160000) https://stackoverflow.com/a/16581096/6309,即该子模块存储库所表示的确切 SHA1。
目标不仅仅是包含一个子存储库,而是包含一个specific该存储库的版本(因此有 gitlink,用于记录应检出该子存储库的正确 SHA1)。
在备份脚本场景中,您应该进入每个子模块,并在其子模块中进行备份自己的裸仓库 https://stackoverflow.com/a/24115534/6309在您的外部驱动器上。
您将在您的文件中找到这些子模块的路径.gitmodules
主存储库中的文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)