我可以让git diff忽略权限更改

我无意中改变了我整个树的权限,并单独提交其他内容更改。

我使用类似于:

 tar -czf deploy.tar git diff --name-only v1 v2 

用两个标签之间的修改文件生成一个tar,问题是,现在因为权限的改变,几乎所有我的树被列为修改。

有没有办法,我可以告诉git diff忽略只有权限更改的文件?

这会告诉git忽略权限:

 git config core.filemode false 

我有意删除源代码文件(〜26K文件)的执行权限后,有这个问题。 然后,git diff说所有的文件都改变了! core.filemode的答案不能帮助我,因为这只会影响你的工作目录的差异,而不是与repo中的2个提交差异。

答案是使用(大吓人)filter-branch命令。 特别是,你需要键入的是:

 git filter-branch -f --tree-filter 'find * -type f | xargs chmod 644 ' -- --all 

从你的工作目录的根。 当然,如果你需要重新尝试,一定要先制作你的回购副本(cp -pr〜/ repo.git〜/ repo-orig.git或类似)。

请享用!