【问题标题】:Copying a git repo via a USB drive causes all files to show as modified通过 USB 驱动器复制 git repo 会导致所有文件显示为已修改
【发布时间】:2019-12-25 17:14:17
【问题描述】:

我一直在我的 mac 上编写一些代码,并想开始在我的 linux 桌面上编写它。项目在 git 下管理。在复制之前,我确保一切都已提交。然后我将包含所有内容的文件夹从我的 mac 复制到 USB 驱动器,然后将文件夹从 USB 驱动器复制到 linux 盒子。复制后,一切看起来都在它应该在的位置,但是如果我执行 git status,所有文件都显示为已修改。我猜这是因为文件上的时间戳已经改变。他们是一种保留旧时间戳以使文件看起来不被修改的方法吗?或者告诉 git 不要担心自上次提交以来的更改?我不想在传输后立即执行 git commit -a,因为我真的不希望在我的 git 历史记录中移动盒子。

【问题讨论】:

  • git 根本不关心文件修改时间戳,我宁愿检查行尾和/或文件模式(权限)
  • 使用git 并仍在复制文件是一个奇怪的用例。为什么不像你应该的那样集中保存 repo 并克隆到每个工作树?
  • @RomainValeri 文件模式确实是罪魁祸首
  • @trojanfoe git bundle 文档对此进行了解释。这不是正常的工作流程,但确实发生了git-scm.com/docs/git-bundle

标签: linux git macos


【解决方案1】:

最简单的做法是使用克隆(而不是复制工作树)来共享存储库。

如果您不能在两台机器之间直接克隆/获取/推送/拉取,那么您可以创建一个“捆绑文件”并复制 那个,而不是复制实际的 repo。 (请参阅 git bundle 文档或搜索有关如何以这种方式共享 repo 的现有问题/答案。)

跨操作系统时,仍然存在潜在问题。例如如果在具有不同默认行结束规则的操作系统之间交叉,您需要考虑如何处理行结束 - 但 mac 和 linux 无论如何都不应该有这个问题。

【讨论】:

  • 更多挖掘发现问题是文件权限变得混乱。我认为这可能发生在 ntfs USB 驱动器上。因此,按照您的建议创建一个包 - 压缩文件夹,复制包,然后解压缩包,整理好东西。谢谢!
  • 很高兴您找到了解决方案,但 ZIP 与捆绑包不同,我仍然不推荐使用 ZIP。 git bundle 是一种在 git 预期机制内复制内容和历史记录的方法,因此是一种在机器之间共享的安全方式,而操作系统级别的复制(甚至是 ZIP 文件)则不是。
猜你喜欢
  • 2011-09-09
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 2021-05-10
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多