Windows上的Git文件权限

kiayqfof  于 2023-02-16  发布在  Windows
关注(0)|答案(7)|浏览(238)

我已经读过了一些关于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结果。

wnavrhmk

wnavrhmk1#

我找到了如何更改权限(也)在Windows上的解决方案在这里:http://blog.lesc.se/2011/11/how-to-change-file-premissions-in-git.html
例如,以下命令将用户执行权限添加到任意文件:

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

kse8i1jr2#

关于stackoverflow的另一个问题:How do I make Git ignore file mode (chmod) changes?
先看看core.filemode设置为什么-

git config core.filemode

尝试将其设置为false:

git config core.filemode false

git-config(1)开始:
一个二个一个一个

vd8tlhqk

vd8tlhqk3#

方便的Git Bash一行程序:

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

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

kqlmhetl

kqlmhetl4#

如果你使用Cygwin git(或者Linux git),你的core.filemode设置很有可能已经在项目级别的$projdir/.git/config中设置好了。我发现我必须做以下几件事才能让Cygwin git和Windows git在Windows文件系统上很好地共存,而不会一直显示不存在的filemode更改:

  • 删除$projdir/.git/config中设置core.filemode的行
  • 在Windows git中,运行“git config --全局核心.filemode false”

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

frebpwbc

frebpwbc5#

首先使用以下命令检查文件权限。

git ls-files --stage

然后更改权限。此处“x”表示执行权限。

git update-index --chmod=+x 'scriptname.ext'

现在重新验证权限。
git ls文件--阶段
NB:如果你运行Windows,并部署在Linux上,请确保仓库中包含的代码具有类似Unix的行结束符。要批量转换文件,可以尝试dos2unix.exe,或使用Git Bash。

llmtgqce

llmtgqce6#

我修改了Ubuntu中的文件权限,提交,推送等,看起来它在Windows/NTFS上不能和msysgit一起工作。

yzuktlbb

yzuktlbb7#

在我的例子中,我不小心移动了shebang线

#! /bin/sh

变成

#! /bin/sh

这会导致git-bash权限检查失败。删除前导空格后,脚本再次变为可执行。

相关问题