我意外地运行了chmod -R 755 projects
我放置所有项目的目录。
幸运的是,我的所有项目都使用 git 进行跟踪。所以我可以git checkout HEAD .
在每个项目内部运行以修复权限。
但是,在某些项目中,有些正在进行的工作尚未提交到树中,这样做将覆盖这些文件的内容。
有没有办法只放弃文件模式的更改而不放弃文件内容的更改?
答案1
我发现这个代码片段完全符合我的要求。
git diff -p \
| grep -E '^(diff|old mode|new mode)' \
| sed -e 's/^old/NEW/;s/^new/old/;s/^NEW/new/' \
| git apply
我将此代码片段分配给 git 别名,然后我就可以输入git fix-perm
权限混乱的目录。
git config --global alias.fix-perm "!f(){ git diff -p | grep -E '^(diff|old mode|new mode)' | sed -e 's/^old/NEW/;s/^new/old/;s/^NEW/new/' | git apply; }; f"
感谢 jtdp。(https://gist.github.com/jtdp/5443498)