...尤其是通过 FAT32 或 exFAT USB 闪存驱动器移动时?
尽管这些工作拷贝很可能将遭受权限的变化,明显的去除符号链接(如果使用它们)......这是改变了Git将会从很好检测,开,是.git/目录的内容不够健全以允许将存储库从一个操作系统和/或文件系统移动到另一个操作系统和/或文件系统吗?例如 Windows、常见的 Linux 发行版、macOS、NTFS、ext FS、APFS ...
如有必要,我可以假设 Git 版本为 2+。
是的,存储库数据库通常可以跨所有现代操作系统移植,包括Windows。它不依赖于任何扩展属性,到目前为止也不依赖于区分大小写。数据库中的文件名最多为 52 个字符。
主要要求是文件名保留大小写,即使在不区分大小写的文件系统上(例如,如果您将 .git/HEAD 从 ext4 复制到 FAT32 到 APFS 到 HFS+ 到 ext4,它应该保持 .git/HEAD 而不是 .git/head )。幸运的是,上面列出的所有文件系统都是大小写保留的,所以很好。
要记住的一件事是,每个分支或标签都表示为 .git/refs 下的一个单独文件。为了适用于任何文件系统,Git 强加了严格的字符集限制,但这并不总是足够的——如果您要迁移到不区分大小写的文件系统(例如 APFS 或 NTFS),最好希望存储库不包含多个分支或标签仅在情况下不同。同样,Git 不禁止使用旧的 DOS 设备名称,例如aux或nul作为分支/标签名称。
(从技术上讲,跨不同文件系统移动 repo 可能会丢失一些文件元数据,例如a-w对象 blob的“只读”( ) 状态,但这不是 Git 本身所关注的。)
如果您仅将 FAT32 用作临时传输,请考虑使用git pack-refs --all --prune并rm -rf .git/logs避免任何分支名称问题,尽管它们不太可能发生。还运行 agit repack -d; git prune以减少松散目标文件的数量。
您甚至可以git bundle用来创建一个传输友好的 blob,其中包含全部或部分提交历史。
| 归档时间: |
|
| 查看次数: |
394 次 |
| 最近记录: |