4

什么git log或类似的参数组合会找到更改文件权限的提交?

我可以使用git log -p <file>和 grep 来表示“新模式”,但这似乎不太令人满意。

4

3 回答 3

5

我的解决方案使用git log --summarygrep

列出所有修改给定文件权限的提交

git log --summary {file} |grep -e ^commit -e"=>"|grep '=>' -B1 | grep ^commit

如果{file}省略,它将列出所有提交,其中任何文件的权限被修改。

于 2015-11-24T07:21:56.490 回答
2

我认为没有一个选项会直接导致“文件权限已更改”之类的消息,但您可以使用git log --raw -- file.sh并查看该文件条目的前两列,即旧模式和新模式。可以使用一个简单的awk脚本来比较两者...

于 2013-05-13T20:22:33.220 回答
0

Git 不存储文件权限。它使用 (umask-mediated) 777 来检查可执行文件和目录,使用 666 来检查普通文件,如此处所示(ls 输出当然会被截断)

$ git checkout empty
$ umask 0
$ git clean -dfx
$ git checkout master
$ ls -l
-rw-rw-rw-  1 jthill jthill   4012 May 13 13:30 tag.c
drwxrwxrwx  2 jthill jthill   4096 May 13 13:30 builtin
-rwxrwxrwx  1 jthill jthill  22332 May 13 13:30 git-am.sh
lrwxrwxrwx  1 jthill jthill     32 May 13 13:30 RelNotes -> Documentation/RelNotes/1.8.2.txt
于 2013-05-13T20:07:15.227 回答