git - Mac中的Git碰撞路径
问题描述
在我的 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'
听起来可能与这个问题相似,但我的情况不同,因为其中一个冲突目录不存在!
出现问题是因为我将目录重命名functions
为Functions
期望 git 正常管理更改,但是在拉取时更改与其他程序员的提交发生冲突。
现在,报告了合并冲突,我能够解决它们......但是 git 解决了它们functions
,那不存在,并且仍然无法解决Functions
,那确实存在,即使文件已经不包含合并冲突。
有什么方法可以解决这个问题吗?
解决方案
这确实是同一个问题。您有两个目录,只是大小写不同,您不能将两者都写入系统,因为您的 Mac 以不区分大小写的方式格式化。它们都存在于 Git 中并且是独立且独立的,但是您的系统无法同时处理两者。
合并冲突可能被写入一个文件的树中,然后被另一个文件覆盖,这就是您无法解决它们的原因。
你有一些选择:
- 重新安装操作系统(或格式化新的 APFS 分区),使其区分大小写,然后检查存储库。
- 使用 Linux VM 或 Linux Docker 容器并挂载 repo 以使用它。
- 删除其中一个目录,如Git FAQ 中所述。
如果您和您的合作者计划在不区分大小写的系统上开展此项目,我强烈建议您采用强制名称大小写的策略。有时这在您的语言或框架中很常见,例如 Java 如何命名其文件的大小写与类的拼写完全一致,但如果您的框架缺少这一点,我建议始终使用小写。您可能希望在 CI 系统中强制执行此操作(例如,通过检查 的输出git ls-files
)以获得良好的衡量标准。
推荐阅读
- visual-studio-code - VS Code:如何同时滚动拆分面板
- python - 用字符串列表标记 Matplotlib 子图 y 轴
- python-3.x - 是否可以使用 Python 中的 ObjectId 字符串更新 MongoDB 字符串字段
- blockchain - 在 Ropsten 网络上部署智能合约
- reactjs - 如何根据 React 中方法的返回值禁用/启用按钮?
- apache-kafka - 代理地址更改后,Kafka Producer 无法重新连接和刷新元数据
- python - 有没有办法使用 python 读取受密码保护的 excel 文件?
- c# - 如何在 C# 中获取 File.Create("Score.txt") 的路径
- rust - 我可以在同一个 fn 中使用 `write!` 和 `file.write_all` 吗?
- angularjs - 为什么javascript中的打印功能在edge中不起作用,但在chrome中起作用