gpt4 book ai didi

git - iCloud Drive 桌面同步与 Git - 已删除的文件重新出现并带有数字后缀的重复项

转载 作者:行者123 更新时间:2023-12-03 14:15:59 25 4
gpt4 key购买 nike

关于我的设置的一些话:

  • MacOs Catalina 10.15.2
  • git与 iCloud Drive 同步的桌面上的项目文件夹已启用同步桌面和文档文件夹选项

  • 我注意到以下情况时不时发生一段时间。昨天,我将 MacBook Pro 备份到 MacOs Catalina 10.15.2这似乎加剧了我在 git 中注意到的以下特性初始化项目文件夹:

    很多时候当我 deleted files来自我的 local worktree它们随机开始重新出现在工作树中(有时甚至一天或更长时间后)作为 untracked files .

    其次,经常,我现有的文件突然看起来 duplicated - 有一些带有数字后缀的副本,例如文件 foo 突然出现 foo 2对于文件栏,有 bar 6 .然后它们也出现在 git statusuntracked files .
    example of duplicates appearing in worktree index

    我也在 .git 中观察到了这种行为文件夹。
    example of duplicates appearing in .git folder

    * 编辑:值得注意的是 <filename> 2重复似乎源于上一次,有时甚至是一个月前(参见上面 .git 文件夹截图中的“配置 2”)。我还注意到(但在我提供的图片上没有显示)有时数字后缀是一个随机的“6”,例如没有数字后缀序列(例如 1-5)导致重复的文件名与数字 6 .

    我时不时地观察到这种情况发生,但今天它无处不在。可能是我做的时候特别出现这个问题 git类似操作 git commit git reset等等。

    我的假设是,这一定与 .git 有关。不适用于 ICloud Drive Desktop file sync .

    所以现在我将禁用 ICloud Drive Desktop file sync选项,看看是否能解决它。

    与此同时,这里有没有人熟悉我所描述的问题,谁能指出我正确的方向?

    这些帖子似乎是相关的:

    Can Git and iCloud Drive be effectively used together?

    https://apple.stackexchange.com/questions/255172/icloud-drive-and-git-repository/353123

    Github repo cloned to synced iCloud drive on multiple computers

    最佳答案

    简答:将您的存储库文件夹放在 iCloud Drive 同步文件夹之外,您应该没问题。为安全起见,不要将 VCS 和文件同步服务结合在一起用于相同的目录/文件。使用 Github/GitLab/Bitbucket/等。用于同步访问和集中保管。

    长答案: iCloud Drive 是一种“消费者”产品,适用于家庭用户。如果您是使用版本控制软件的开发人员,您将被视为“专业人士” - 您会发现 iCloud Drive(以及其他文件同步解决方案)并不是一个强大的解决方案,无法与您的版本控制软件配合使用文件夹。 iCloud Drive(和其他文件同步服务)不知道您的 VCS 设置,并且在您执行对目录进行彻底更改的操作时会感到困惑 - 例如切换分支或 pull 更改。如果您想同时访问不同计算机/设备上的存储库,并拥有存储库文件的“中央备份”,只需使用众多存储库托管服务之一 - 如 Github、GitLab、Bitbucket 等。

    更长的答案:所有“自动同步”软件的关键问题是:我们如何确定文件何时被更改,并且应该同步?我们是否检查实际文件内容,假设同名文件应该是同一个文件?如何跟踪名称更改?当我们将文件从一台计算机传输到另一台计算机时,权限(或日期)可能会发生变化如何?

    通常,文件同步软件会在您工作时监视目录是否有任何更改。一旦它检测到您更改了其中的某些内容,它将通过其例行程序来确定哪些文件已更改,并重新同步所需的文件。

    有许多 VCS 操作——比如 pull 存储库中的最新更改、切换分支或回滚到先前的提交——这可能会导致文件同步软件触发其同步例程。根据实际的同步算法(它如何确定已更改的内容、同步采取哪些步骤以及实际执行同步的速度),它很可能会检测到“误报”,这将导致您以重复结束。

    在“iCloud Drive + git”对的特殊情况下,我们有一个致命的组合:git 在对整个目录结构进行彻底更改方面非常快,而 iCloud Drive 在检测实际更改的内容方面非常糟糕——而且也是同步非常慢。这意味着当 git 切换分支和更新您的工作树时,iCloud Drive 可能会错误地检测到文件已更改,而实际上它们尚未更改。然后它将标记这些文件以进行同步。但是因为它的同步速度非常慢,当它制作第一个重复副本的一半时,您可能已经对您的存储库进行了另一个 git 更改 - 这将导致您现在拥有“文件 3”,然后是“文件 4”等等。

    希望这在 future 可能会发生变化,但与此同时,最安全的解决方案是不要将版本控制的存储库保存在任何自动同步的文件夹中。在这种特殊情况下,如果您将存储库保存在不是“文档”或“桌面”的任何文件夹中 - 并且没有被 iCloud Drive 监视 - 那么您应该不会遇到 git 问题。

    请注意,这不仅仅是 iCloud Drive 和 git 的问题。如果您使用任何文件同步服务(Dropbox、Google Drive、OwnCloud、Box 等)和任何 VCS(git、svn、fossil 等),您可能会遇到某种重复、损坏或安全问题. :(

    最后,值得一提的是,iCloud Drive 和其他文件同步服务提供的好处是“可用性”(能够从多台计算机和设备访问存储库,使它们保持同步)和“安全性”(具有中央位置,并保存所有文件的安全副本)。如果您使用任何存储库托管服务,例如 Github、GitLab、Bitbucket 等,您就已经获得了这些好处。您可能已经在使用的存储库托管服务! ;-)

    关于git - iCloud Drive 桌面同步与 Git - 已删除的文件重新出现并带有数字后缀的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59308049/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com