git - 如何处理git中区分大小写的文件?
问题描述
我的团队在多个操作系统(Windows、Unix)上工作。我们有一个 unix 服务器,我们的本地机器是 windows。
我们的 github 存储库存在问题,因为 Unix 区分大小写,因此我们的存储库具有不同大小写的相同名称的文件。因此,克隆存储库会删除其中一个文件。
处理这个问题的最佳方法是什么?有标准约定吗?
解决方案
一般来说,跨系统进行这项工作的方法是采用文件名正确大小写的约定并坚持下去,如果可能的话,在 CI 中强制执行。这是使事情在不能正确处理大小写不同的文件名的系统上工作的最佳方法。
例如,如果您正在使用 Java 文件,那么约定是使用与它们包含的类的大小写相同的大小写来命名这些文件。如果你在 Rust 中处理文件,通常它们应该总是小写。如果您的语言没有约定,或者您不确定该怎么做,请首选小写文件名。这些在区分大小写的 Unix 系统上更容易键入,因为用户不需要处理按住 Shift 键的问题。
无论您做什么,都要在 CI 中强制执行约定,就像任何其他代码库约定一样,这样用户就不会意外签入不符合标准的文件。理想情况下,您还会有一个脚本,用户可以在他们的系统上运行,以帮助他们在提交之前进行检查。可以git ls-files
为索引或git ls-tree -r
提交或树完成此脚本。
对于现有文件,您需要删除或重命名其中一个有问题的文件。您可以根据需要在 Unix 系统上使用git mv
或执行此操作git rm
。
推荐阅读
- c++ - LLVM 和 Clang 中的入口点文件是什么?
- ms-access - 将布尔值导出到 CSV
- java - “-source 7 不支持 Lambda 表达式,请使用 -source 8 启用 lambda 表达式”
- postgresql - 为 postgresql 和 golang 创建 docker 文件
- oracle - 为什么匿名块的最后一部分需要 BEGIN END(执行部分)?
- python - Python多处理错误
- mongodb - $match a $lookup if pubDate
- html - 我如何制作类似 Discord 的登录表单?
- excel - VBA将行插入特定表格的底部并将所有单元格向下移动
- azure - 创建 azurerm_data_protection_backup_vault 时,Terraform 返回错误“在命名空间中找不到资源类型”