【问题标题】:Git colliding paths in macMac中的Git碰撞路径
【发布时间】:2021-03-29 04:29:11
【问题描述】:

我在 Mac 中克隆项目时收到以下消息:

Cloning into 'cinetogoproject'...
remote: Counting objects: 3863, done.
remote: Compressing objects: 100% (2777/2777), done.
remote: Total 3863 (delta 1203), reused 2940 (delta 762)
Receiving objects: 100% (3863/3863), 152.22 MiB | 3.12 MiB/s, done.
Resolving deltas: 100% (1203/1203), done.
Updating files: 100% (3109/3109), done.
warning: the following paths have collided (e.g. case-sensitive paths
on a case-insensitive filesystem) and only one from the same
colliding group is in the working tree:

  'frontend/cinetogo/source/src/attractora/Functions/index.js'
  'frontend/cinetogo/source/src/attractora/functions/index.js'

听起来可能类似于this question,但我的情况不同,因为其中一个冲突目录不存在!

问题的出现是因为我将目录 functions 重命名为 Functions 期望 git 正常管理更改,但是在拉取时更改与其他程序员的提交发生冲突。

现在,报告了合并冲突,我能够解决它们...但是 git 为不存在的 functions 解决了它们,并且对于确实存在的 Functions 仍然无法解决,即使文件已不包含合并冲突。

有什么办法可以解决这个问题吗?

【问题讨论】:

  • 不区分大小写的文件系统过去、现在和将来都是一个糟糕的主意。

标签: git


【解决方案1】:

这确实是同一个问题。您有两个目录,只是大小写不同,您不能将两者都写入系统,因为您的 Mac 以不区分大小写的方式格式化。它们都存在于 Git 中并且是独立且独立的,但您的系统无法同时处理两者。

合并冲突可能被写入一个文件的树中,然后被另一个文件覆盖,这就是您无法解决它们的原因。

你有一些选择:

  • 重新安装操作系统(或格式化新的 APFS 分区),使其区分大小写,然后检查存储库。
  • 使用 Linux VM 或 Linux Docker 容器并装载存储库以使用它。
  • 删除其中一个目录,如explained in the Git FAQ

如果您和您的合作者计划在不区分大小写的系统上开展此项目,我强烈建议您采用强制名称大小写的政策。有时这在您的语言或框架中很常见,例如 Java 如何命名其文件的大小写与类的拼写完全一致,但如果您的框架缺少这一点,我建议始终使用小写。您可能希望在 CI 系统中强制执行此操作(例如,通过检查 git ls-files 的输出)以获得良好的衡量标准。

【讨论】:

    猜你喜欢
    • 2019-11-27
    • 2011-11-16
    • 2018-11-21
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    相关资源
    最近更新 更多