这个问题相同,一起使用这两种服务时是否会出现任何可能的并发症?
不,它们不应该一起使用。
- 苹果表示:"您不应该将应用程序文件夹,库或.tmp文件存储在iCloud Drive中。
.git
是一个应用文件夹。 - 有一个 iCloud Drive 排除的文件名列表,git 不会避免。因此,例如,如果您将标签命名为"tmp",则该标签将不会同步。也没有什么可以阻止 git 修改其内部文件结构,或 iCloud Drive 修改其排除列表,因此此同步失败始终发生。
- iCloud Drive 忽略符号链接,git 不会。因此,
git status
可能会在iCloud Drive完成同步的不同计算机上返回不同的结果。
更广泛地说,git 和 iCloud Drive 是"此目录的内容是什么"的两种不同的有损实现,人们不应该期望它们是等效的。
优化储存空间功能时要小心,因为 iCloud 云盘中的所有文件都存储在本地,而是可以按需请求。
从我的测试来看,git 似乎不会触发操作系统请求该文件,而是选取占位符文件,名为 .original_filename.icloud
.
TL;DR 假设您使用的是 macOS,则可以创建一个包含存储库的稀疏磁盘映像,并将此映像安全地存储在 iCloud 云盘上
<小时 />可能不是您要找的答案,但我认为有一种方法非常适合 git 存储库的存档或不频繁访问存储。
这个想法是使用磁盘 Utility.app 创建稀疏或稀疏捆绑磁盘映像。您可以放置一个非常大的大小,该大小将表示磁盘映像上的最大可用磁盘空间。实际的图像文件大小只会占用内部实际使用的空间。
将此稀疏或稀疏捆绑包存储在 iCloud Drive 上,访问存储库所需要做的就是在需要时挂载映像,然后在其中工作。这样,iCloud 云盘只需同步单个二进制文件(图像),而不是 git 存储库的每个单独文件。
唯一的缺点是,当您删除其中的内容时,稀疏或稀疏捆绑包大小不会减少。您可以使用 hdiutil: hdiutil compact my-special-repo.sparseimage
"回收"可用空间。
我一直在为一个我不希望托管在远程服务器上的关键本地存储库执行此操作,但必须确保我没有丢失它,同时在硬件丢失的情况下仍然可用和最新。几乎没有提醒,重要数据必须始终备份在多个位置。
以下是那些寻找综合演练的人的步骤:
- 使用磁盘 Utility.app 创建新的空白映像
- 设置一个足够大的大小来容纳你的存储库,这将是最大可用空间
- 示例:空的 2GB 稀疏映像仅使用磁盘上的 8.4MB
- 在映像格式下选择稀疏磁盘映像或稀疏捆绑磁盘映像
- 其他设置由您自行决定,我建议您保留默认值,除非您需要在不支持 APFS 的 Mac 上访问此图像。
- 映像应在创建后自动装载,如果不是这种情况,请手动装载
- 将 git 存储库放在装载的映像中
- 弹出图像并将其移动到 iCloud 云盘
- 享受在 Mac 上同步的 git 存储库
奖金步骤
- 即使您删除其中的文件,图像也不会减小大小。如果需要回收空白空间,请使用
hdiutil compact my-special-repo.sparseimage
我一直在桌面中使用git,它被设置为同步到iCloud好几个月了。到目前为止,我还没有看到任何问题。
我想如果你不同步在两台 Mac 上执行 git 操作,你应该是安全的。
是的,它们可以"有效地"一起使用,尽管在某些情况下您可能会遇到问题。一般来说,如果你不熟悉iCloud和Git的行为方式,我不建议这样做,我会避免任何带有符号链接或有许多贡献者的大型项目。
如果您使用"优化存储"功能,请特别小心 - 它可能会迫使您不时手动修复 - 但根据我的经验,如果您几个月没有处理项目,这通常只是一个问题,在这种情况下,我希望通过不保留我曾经参与过的每个项目的本地副本来节省磁盘空间。
我发现iCloud Drive是访问我所有设备(办公室台式机,家庭台式机,笔记本电脑,平板电脑,手机)上所有存储库的好方法。
我刚刚在Windows上的iCloud驱动器中添加了一个git存储库。那里看起来不错,但是iCloud驱动器被网站和Mac上名为00到ff的文件夹污染,以及来自存储库的神秘项目扁平化到驱动器的根部。
所以我当然不会推荐它。
您应该使用类似于 git-remote-dropbox 的解决方案,该解决方案考虑了同步文件系统的特征以避免损坏。git-remote-dropbox可能会与开箱即用的iCloud Drive一起使用。
我尝试将iCloud同步git存储库到三台Mac机器,其中两台机器遇到登录黑屏并始终冻结症状。而且Mac运行得很慢。
打开活动监视器,发现一个"鸟"进程一直处于几乎 100% CPU 使用率的位置,而实际上没有完成任何事情。
该过程与iCloud同步相关联(请参阅此处)。解决了iCloud注销后的问题。
基于其他 git repo 同步讨论,Google Cloud Build 可能会考虑。