Windows上的Git文件权限

我已经阅读了一些关于Git中文件权限的问题,我仍然有点困惑。 我在GitHub上有一个回购。 合并后,他们应该是相同的。 然而:

$ git diff --summary origin/epsilon master/epsilon mode change 100644 => 100755 ants/dist/sample_bots/csharp/compile.sh mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/MyBot.coffee mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/ants.coffee mode change 100644 => 100755 ants/util/block_test.sh mode change 100644 => 100755 manager/mass_skill_update.py mode change 100644 => 100755 worker/jailguard.py mode change 100644 => 100755 worker/release_stale_jails.py mode change 100644 => 100755 worker/start_worker.sh 

我试过改变文件权限,但是它不会改变比较结果。

我该怎么办?

编辑 :这个问题是由于我在共享的Windows 7主机上托piperepo的Ubuntu VM guest上使用git的事实造成的。 这是一场灾难。 这里的答案对我来说似乎是合理的,但是我不能打勾,因为他们回答了我没有的问题。

我发现如何在Windows上更改权限(也)的解决scheme: http : //blog.lesc.se/2011/11/how-to-change-file-premissions-in-git.html

例如,以下命令将用户执行权限添加到任意文件:

 git update-index --chmod=+x <file> 

从另一个问题在这里stackoverflow: 我如何让Git忽略文件模式(CHMOD)的变化?

尝试:

 git config core.filemode false 

从git-config(1) :

  core.fileMode If false, the executable bit differences between the index and the working copy are ignored; useful on broken filesystems like FAT. See git-update-index(1). True by default. 

Git Bash的方便单行:

 find . -name '*.sh' | xargs git update-index --chmod=+x 

它会将所有.sh文件标记为可执行文件。 之后,你只需要git commit

我通过更改Ubuntu中的文件权限来修复它,提交,推送和所有确定。 似乎只是在Windows / NTFS的msysgit不起作用。

如果您使用Cygwin git(或者Linux git,我也假设),那么您的core.filemode设置很有可能在$ projdir / .git / config的项目级设置。 我发现我必须做下面的事情来让我的Cygwin git和我的Windows git很好地共存在一个Windows文件系统上,而不是不存在的文件模式变化总是显示出来:

  • 删除$ projdir / .git / config中的行设置core.filemode
  • 在Windows Git中,运行“git config –global core.filemode false”

这允许我的Cygwin git继续看到通常相关的文件模式更改,同时指示Windows git忽略它看到的文件模式更改,这通常是误报。