Mac中的Git冲突路径

np8igboo  于 2022-11-20  发布在  Git
关注(0)|答案(1)|浏览(216)

在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/dir1/source/src/dir2/Functions/index.js'
  'frontend/dir1/source/src/dir2/functions/index.js'

这听起来可能类似于this question,但我的情况不同,因为其中一个冲突目录不存在!
出现这个问题是因为我将目录functions重命名为Functions,希望git能正常管理这个更改,但是在拉取时,这个更改与其他程序员的提交发生了冲突。
现在,合并冲突被报告出来了,我可以解决它们...但是git解决了functions的合并冲突,而Functions的合并冲突仍然无法解决,即使文件已经不包含合并冲突。
有什么办法可以解决这个问题吗?

bqf10yzr

bqf10yzr1#

这确实是同一个问题。你有两个目录,只是大小写不同,你不能同时写入系统,因为你的Mac是不区分大小写的格式。它们都存在于Git中,是独立的,但你的系统无法同时处理这两个目录。
合并冲突可能被写入到一个文件的树中,然后被另一个文件覆盖,这就是您无法解决它们的原因。
您可以选择:

  • 重新安装操作系统(或格式化新的APFS分区),使其区分大小写,然后 checkout 存储库。
  • 使用Linux VM或Linux Docker容器并挂载存储库以使用它。
  • 删除其中一个目录,如Git常见问题解答中所述。

如果您和您的合作者计划在不区分大小写的系统上进行这个项目,我强烈建议您采用一种强制名称大小写的策略。有时这在您的语言或框架中是习惯性的,比如Java如何将其文件命名为与类拼写完全相同的大小写,但是如果您的框架缺少这一点,我建议总是使用小写。你可能想在你的CI系统中强制执行这一点(例如,通过检查git ls-files的输出),以获得良好的度量。

相关问题