$ git add test-file
$ git commit -m 'first commit'
create mode 100644 test-file
$ git push
Run Code Online (Sandbox Code Playgroud)
$ git update-index --add --chmod=+x test-file
$ git commit -m 'change mode'
mode change 100644 => 100755 test-file
$ git push
Run Code Online (Sandbox Code Playgroud)
在那之后如果你去GitHub它仍然显示为100644无论如何.
小智 32
MSYS不是问题.即使MSYS chmod不起作用(它没有),Git也有一种解决这个问题的内置方法,即git update-index --chmod=+x.让我们清楚的是,git update-index只有索引(临时区域),而不是本地存储库(工作目录).
我确信问题出在GitHub上.在GitHub上,如果最初使用模式100775推送文件,一切都很好.如果文件最初被推送为100644,则会导致问题.尝试更改文件模式将成功git add,成功git commit,成功git push,甚至显示在GitHub文件历史记录中,但不会反映在GitHub 上的"blob/master"页面上.
更新
来自:Petros Amiridis(GitHub员工)
主题:如何在GitHub上更改文件模式?
我有一些好消息.我们很棒的团队刚刚确认这是我们最终的缓存错误.我们的团队已部署修复程序.
Kei*_*son 12
我认为问题是,git的Windows实现所基于的MSYS无法chmod正常处理.
(编辑:另一个答案说MSYS不是问题,这看起来似乎有道理.)
我猜是命令
git update-index --add --chmod=+x test-file
Run Code Online (Sandbox Code Playgroud)
通过更新本地存储库中的元数据(应该可以工作)和更改文件的权限(没有)来工作,使本地存储库处于不一致状态.
您应该可以通过撤消以下内容来退出update-index:
git update-index --add --chmod=-x test-file
git commit -m 'change mode back'
git push
Run Code Online (Sandbox Code Playgroud)
将存储库恢复到一致状态,然后在存储库的非Windows副本中进行更改.如果您无法访问Linux或其他类Unix系统,Cygwin包括git(不是默认情况下,但您可以通过它安装setup.exe)并为您提供chmod实际工作的环境.Cygwin的默认shell是bash,所以如果你一直在使用git bash,环境应该很熟悉.
当您从git bash shell查看文件时,该文件仍然不会显示为可执行文件,但它应该显示100755在GitHub Web界面中.
| 归档时间: |
|
| 查看次数: |
34674 次 |
| 最近记录: |