Git合并已分离的目录

时间:2013-08-26 20:45:00

标签: linux git symfony merge tortoisegit

不太清楚如何清楚地解释这一点,但现在就去了。

由于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目录中的所有最新代码?

非常感谢所有人的帮助。

1 个答案:

答案 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也有变化,以改善对案件敏感性的处理支持:

因此,检查您使用的版本也值得。