我已经读过了一些关于Git中文件权限的问题,但我仍然有点困惑。我在GitHub上有一个repo从另一个repo分支出来。合并后,它们应该是相同的。然而:
$ 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
我试过更改文件权限,但它没有改变diff结果。
7条答案
按热度按时间wnavrhmk1#
我找到了如何更改权限(也)在Windows上的解决方案在这里:http://blog.lesc.se/2011/11/how-to-change-file-premissions-in-git.html
例如,以下命令将用户执行权限添加到任意文件:
kse8i1jr2#
关于stackoverflow的另一个问题:How do I make Git ignore file mode (chmod) changes?
先看看core.filemode设置为什么-
尝试将其设置为false:
从git-config(1)开始:
一个二个一个一个
vd8tlhqk3#
方便的Git Bash一行程序:
它会将所有
.sh
文件标记为可执行文件。之后,您只需git commit
。kqlmhetl4#
如果你使用Cygwin git(或者Linux git),你的core.filemode设置很有可能已经在项目级别的$projdir/.git/config中设置好了。我发现我必须做以下几件事才能让Cygwin git和Windows git在Windows文件系统上很好地共存,而不会一直显示不存在的filemode更改:
这允许我的Cygwin git继续看到文件模式的变化,这些变化通常是相关的,同时指示Windows git忽略它看到的文件模式变化,这些变化通常是误报。
frebpwbc5#
首先使用以下命令检查文件权限。
然后更改权限。此处“x”表示执行权限。
现在重新验证权限。
git ls文件--阶段
NB:如果你运行Windows,并部署在Linux上,请确保仓库中包含的代码具有类似Unix的行结束符。要批量转换文件,可以尝试
dos2unix.exe
,或使用Git Bash。llmtgqce6#
我修改了Ubuntu中的文件权限,提交,推送等,看起来它在Windows/NTFS上不能和msysgit一起工作。
yzuktlbb7#
在我的例子中,我不小心移动了shebang线
变成
这会导致git-bash权限检查失败。删除前导空格后,脚本再次变为可执行。