如何使用 Git 仅丢弃模式更改

如何使用 Git 仅丢弃模式更改

我意外地运行了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

答案2

运行此命令。

git config core.fileMode false

有关详细信息,请参阅. 它帮助了我。

相关内容