“git blame”文件访问控制修饰符

时间:2017-06-16 21:09:48

标签: git

我注意到我的git存储库中有几个.txt文件具有执行权限。我还注意到,当我chmod a-x *.txt时,回购实际上显示了变化。以下是更新文件后git diff的输出。

diff --git a/requirements.txt b/requirements.txt
old mode 100755
new mode 100644

有没有办法责怪文件的权限? (具体来说,我想了解谁为这些文件添加了a+x权限。

2 个答案:

答案 0 :(得分:5)

您可能已使用git diff命令指定了一些提交以获得问题中显示的结果。让我们假设命令是:

git diff goodcommit..badcommit requirements.txt

如果您省略..badcommit部分,则假设badcommitHEAD。您可以通过运行以下命令序列轻松找到违规提交(和罪魁祸首):

git bisect start badcommit goodcommit
git bisect run test ! -x requirements.txt

等待完成。最后,您将收到如下消息:

running test ! -x requirements.txt
8088473809f905bd8f3d5825983e8c9fe82b10c6 is the first bad commit
commit 8088473809f905bd8f3d5825983e8c9fe82b10c6
Author: author
Date:   Fri Jun 16 23:05:49 2017 +0100

    commit message

要恢复正常工作,只需运行:

git bisect reset

答案 1 :(得分:1)

Git只存储文件内容,并执行位值。 See this answer for further info。因此,它不会反映任何其他权限更改。

您可以使用:

git log --follow -p -- a/requirements.txt

查看文件的历史记录。