不太清楚如何清楚地解释这一点,但现在就去了。
由于Tortoise-git中的错误,我们已经结束了这样的情况;
我们所有的代码都应该在这样的目录结构下(这是Symfony2项目);
src/XYZ/OurExitingBundle
src/XYZ/AnotherExcitingBundle
但是,由于(我们认为)Tortoise-git中的错误,当我们将代码拉到linux盒子上时,我们已经有了;
src/XYZ/OurExcitingBundle
src/XYZ/AnotherExcitingBundle
src/xyz/ourexcitingbundle
src/xyz/anotherexcitingbundle
(即实际目录,加上小写等价物)。制作我们项目的文件似乎在CamelCase和小写目录之间随机分割。
当我们在Windows机器上开发时,这在编码时无关紧要,但是当代码被推送到我们的linux服务器时,一切都会崩溃,因为文件不在它们应该的位置,或者文件存在于CamelCase目录,但较新的版本位于小写目录中。
所以,我的问题是,有没有办法将小写目录中的所有文件“合并”到CamelCase目录中的等效文件中,最后只有CamelCase目录中的所有最新代码?
非常感谢所有人的帮助。
答案 0 :(得分:1)
这里有两件事要做。最简单的方法是确保Windows上的每个客户端都有
core.ignorecase = true
在每个存储库上设置。这意味着git将忽略本地案例中的任何差异,并应使用本地存储库中使用的相同案例。
其次,需要在存储库中更改所有间距不正确的路径。这有副作用,团队必须拉这个新版本的历史。 filter-branch
命令通常用于此类任务。这将是:
git filter-branch --tree-filter 'test -d src/xyz && for f in `git ls-files src/xyz`; do git mv "$f" src/XYZ; done'
Tortoise Git也有变化,以改善对案件敏感性的处理支持:
因此,检查您使用的版本也值得。