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

Sho*_* Ya 15 linux git permissions

我不小心跑到chmod -R 755 projects了放置所有项目的目录。

幸运的是,我所有的项目都是使用 git 进行跟踪的。所以我可以在每个项目中运行git checkout HEAD .来修复权限。

但是,在某些项目中,有一些正在进行的工作尚未提交到树中,这样做将覆盖这些文件的内容。

有没有办法只放弃文件模式的更改,而不放弃文件内容的更改?

Sho*_* Ya 16

我发现这个片段完全符合我的要求。

git diff -p \
    | grep -E '^(diff|old mode|new mode)' \
    | sed -e 's/^old/NEW/;s/^new/old/;s/^NEW/new/' \
    | git apply
Run Code Online (Sandbox Code Playgroud)

我将此片段分配给 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"
Run Code Online (Sandbox Code Playgroud)

积分归 jtdp 所有。(https://gist.github.com/jtdp/5443498

  • 最后一个命令有些奇怪。`!f` 被 bash 替换为最后一个以 `f` 开头的历史命令 (2认同)