【问题标题】:How to stop git from making files non-executable on cygwin?如何阻止 git 在 cygwin 上使文件不可执行?
【发布时间】:2011-10-26 07:11:39
【问题描述】:

我通过 cygwin 在 Windows 上使用 git,并很快决定使用 filemode=false(否则在最初的 git 克隆之后我有很多更改)。我绝对对跟踪权限根本不感兴趣,我唯一需要的是让某些文件可执行。有时,我发现某些文件上的x 标志丢失了,我强烈认为这是因为 git。

我很高兴有一个允许在需要时执行chmod a+x ... 的解决方案。

【问题讨论】:

    标签: git permissions cygwin


    【解决方案1】:

    你应该以git update-index --chmod=+x <file>开头。

    但这不会改变你的工作副本,因为:

    git checkout .
    

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。 git update-index --chomd=+x 对我不起作用。

      我使用 chmod +x ,然后提交,效果很好。

      【讨论】:

      • 或者使用update-index,提交,再次签出文件。
      【解决方案3】:

      我相信你想要git update-index --chmod=+x <file>,然后是提交。

      【讨论】:

      • 我认为它没有帮助,因为我使用的是filemode=false,所以我认为在从 git 中获取文件后我必须做一些事情(而不是把它们放在 git 中)。每当 git 更改或创建文件时都适用的东西。此外,它应该会自动运行。
      • The docs 特别推荐该命令用于 filemode=false 的系统。如果我理解正确,该设置仅适用于权限更改的自动检测。 Git 仍然存储一个文件模式,这是您执行git ls-tree HEAD 时的第一列。如果它显示为 644 而不是 755,则 git 在写入该文件时不会设置可执行位。
      • 我明白我误解了filemode=false。我以某种方式认为,它会禁用存储位,但“索引和工作副本之间的可执行位差异被忽略”。
      • 现在我明白了......它可以工作,但如果我签出旧版本当然不会。这是我在第一次提交可执行文件后应该做的事情(不是太晚了,因为我真的不想重新调整整个历史记录)。这并不完美,但它有帮助,谢谢。
      • 我使用的是 Cygwin 版本的 git。我的同事使用“git bash”外壳,它使用 MSYS 而不是 Cygwin。他们应该一起愉快地工作,但是其他人签入的 *.bat 文件似乎对他们来说是可执行的,但对我来说却不是。我认为 MSYS 在创建 *.bat 文件时隐式地使它们可执行,但在签入时不会费心保留可执行位; Cygwin 不这样做。 (我运行chmod +x 并在需要时检查它们。)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 2022-07-02
      • 2021-06-14
      • 2017-11-08
      • 2011-08-18
      • 2012-08-10
      • 2018-08-27
      相关资源
      最近更新 更多