如何在GitHub上更改文件模式?

时间:2012-01-27 00:40:03

标签: git github

$ git add test-file

$ git commit -m 'first commit'
 create mode 100644 test-file

$ git push

$ git update-index --add --chmod=+x test-file

$ git commit -m 'change mode'
 mode change 100644 => 100755 test-file

$ git push

之后,如果你去GitHub,它仍然显示为100644无论如何。

2 个答案:

答案 0 :(得分:30)

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上更改文件模式?

     

我有一些好消息。我们很棒的团队刚刚确认它是一个缓存错误   在我们的结束。我们的团队已经部署了修复程序。

答案 1 :(得分:12)

我认为问题是git的Windows实现所基于的MSYS无法正确处理chmod

(编辑:另一个答案说MSYS不是问题,这看起来似乎有道理。)

我猜是命令

git update-index --add --chmod=+x test-file

通过更新本地存储库中的元数据(应该可以工作)并更改文件的权限(不存在),使本地存储库处于不一致状态。

你应该可以通过撤消update-index

来退出
git update-index --add --chmod=-x test-file
git commit -m 'change mode back'
git push

将存储库恢复到一致状态,然后在存储库的非Windows副本中进行更改。如果您无法访问Linux或其他类Unix系统,Cygwin包括git(默认情况下不是,但您可以通过setup.exe安装)并为您提供环境其中chmod实际上有效。 Cygwin的默认shell是bash,所以如果你一直在使用git bash,环境应该很熟悉。

当您从git bash shell查看文件时,该文件似乎仍然不可执行,但它应该在GitHub Web界面中显示为100755