【问题标题】:"git blame" a file access control modifier"git blame" 文件访问控制修饰符
【发布时间】:2017-11-19 18:00:42
【问题描述】:

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

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

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

【问题讨论】:

  • git blame 不看权限,只看内容。使用ArturFH's method,因为它可以让您运行任意测试。

标签: git


【解决方案1】:

您可能使用了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

【讨论】:

    【解决方案2】:

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

    你可以使用:

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

    查看文件的历史记录。

    【讨论】:

    • 因为我的问题专门询问了执行位,所以您的回答似乎有点错过了我所问的问题。不过,感谢您的帮助!
    • 所以你不关心任何其他权限位?
    • 对,就像我在问题中说的那样> 有没有办法责怪文件的权限? (特别想知道是谁给这些文件添加了 a+x 权限。
    猜你喜欢
    • 2010-11-13
    • 1970-01-01
    • 2010-12-26
    • 2017-03-13
    • 2014-11-03
    • 1970-01-01
    • 2017-08-18
    • 2013-05-25
    • 2015-04-09
    相关资源
    最近更新 更多