我无意中更改了整个树的权限,并单独提交更改以及其他内容更改.
我使用类似的东西:
tar -czf deploy.tar git diff --name-only v1 v2Run Code Online (Sandbox Code Playgroud)
使用两个标签之间的修改文件生成tar,问题是现在因为权限更改几乎所有我的树都被列为已修改.
有没有办法让我git diff忽略那些只更改权限的文件?
Dan*_*ach 145
这将告诉git忽略权限:
git config core.filemode false
Ala*_*son 12
故意从源代码文件(~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或类似).
请享用!
这是一个古老的问题,答案已经在注释中,但是:
使用-G<regex>选项(“查找其补丁程序文本包含与之匹配的添加/删除的行的差异<regex>。”)搜索所有更改,即.。仅限权限的更改与此不匹配,因此将被忽略。
所以: git diff -G.