【问题标题】:Updating and committing only a file's permissions using git version control使用 git 版本控制仅更新和提交文件的权限
【发布时间】:2012-05-17 23:23:53
【问题描述】:

刚刚将 some.sh 文件转换为可执行文件 (chmod 755 ...),权限已更新,但内容未更新。有没有办法将文件 commit 到 git 中,以便在 clone / checkout / 上恢复/设置可执行位拉 ?

更新:如何跟踪新权限已提交给github

【问题讨论】:

    标签: git


    【解决方案1】:

    默认情况下,如果您更改了执行文件权限,git 将更新它们。它不会更改或跟踪任何其他权限。

    如果你在修改执行权限时没有看到任何变化,你可能在 git 中有一个忽略文件模式的配置。

    查看您的项目,在 config 文件的 .git 文件夹中,您应该会看到如下内容:

    [core]
        filemode = false
    

    您可以在您喜欢的文本编辑器中将其更改为true,或运行:

    git config core.filemode true
    

    然后,您应该能够正常提交您的文件。它只会提交权限更改。

    【讨论】:

    【解决方案2】:

    不适合我。

    模式为真,文件权限已更改,但 git 说没有工作可做。

    git init
    git add dir/file
    chmod 440 dir/file
    git commit -a
    

    问题似乎是 git 只识别某些权限更改。

    【讨论】:

    • 正确 - git 实际上只跟踪文件是否可执行,而不是完整的 *nix 权限集。因此,您必须在可执行文件/非可执行文件之间切换文件,以使其认为您已经更改了值得提交的内容...
    • 我找不到明确的文档:我可以使用什么后操作触发器来相应地设置权限?
    • 好吧,git 中有一个 post-checkout 钩子,它可以涵盖某些情况,但我不确定这是否会涵盖更新工作树中文件的所有可能内容。您最好在您的存储库中添加一个额外的 shell 脚本来相应地设置内容。或者,有几个项目可以增加git 来存储元数据,但我从来没有真正尝试过它们中的任何一个......
    • 我将文件权限更改为 777 并执行了git update-index --refresh,但差异显示为old mode 100644 new mode 100755。它没有更新所有权限
    • 在此处查看@tishma 答案stackoverflow.com/questions/14557106/…。这对我有用
    【解决方案3】:

    @fooMonster 文章对我有用

    # git ls-tree HEAD
    100644 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe    script.sh
    

    如您所见,该文件具有 644 权限(忽略 100)。我们想将其更改为 755:

    # git update-index --chmod=+x script.sh
    

    提交更改

    # git commit -m "Changing file permissions"
    [master 77b171e] Changing file permissions
    0 files changed, 0 insertions(+), 0 deletions(-)
    mode change 100644 => 100755 script.sh
    

    【讨论】:

    • 需要注意的是,你实际上必须使用'-x/+x'。您不能设置任何其他权限或位掩码。
    • 注意使用git commit -a 并没有为我做任何事情,但是在命令行上设置消息却可以。有点怪癖
    • 命令顺序应该是:# git update-index --chmod=+x script.sh# git ls-tree HEAD# git commit -m "Changing file permissions"# git push
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2011-02-23
    • 2018-01-06
    • 2020-02-12
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    相关资源
    最近更新 更多