我不加注意地更改整个树的权限,并将该更改单独提交到其他内容更改中。
我用的是:
tar -czf deploy.tar git diff --name-only v1 v2
要在两个标记之间生成带有修改过的文件的tar,问题是,由于权限的改变,几乎我的所有树都被列为已修改的树。
有没有办法让我知道git diff
忽略那些只更改权限的文件?
发布于 2018-04-09 11:45:15
这将告诉git忽略权限:
git config core.filemode false
发布于 2018-04-09 12:01:49
在故意从源代码文件(~26K文件)中删除执行权限(~26K文件)之后,我遇到了这个问题。然后,gitdiff说所有的文件都变了!用core.filemode回答对我没有帮助,因为这只会影响对你的工作进度的影响,而不是对回购中2次提交的影响。
答案是使用(大的、可怕的)Filter分支命令。
git filter-branch -f --tree-filter 'find * -type f | xargs chmod 644 ' -- --all
当然,从你工作的起点开始,一定要先复制你的回购(cp-pr~/repo.git~/repo-orig.git或类似的),以防你需要重新尝试。
https://stackoverflow.com/questions/-100008008
复制相似问题