【问题标题】:Changing a perl script to executable makes git think the file has changed将 perl 脚本更改为可执行文件使 git 认为文件已更改
【发布时间】:2013-12-28 18:25:01
【问题描述】:

我有一个项目正在基于 Windows 的 IDE 中开发。该项目中包含一些 perl 脚本。

将项目克隆到生产服务器(基于 Linux)后,我将 perl 文件的权限更改为仅供用户执行。

现在,如果我在 Windows 服务器上进行更改并将其推送到存储库,当我尝试将更改拉到服务器上时,我被告知“错误:您对以下文件的本地更改将被覆盖合并”。

我该如何解决这个问题?我正在努力获得由另一个脚本触发的半自动拉取,但我需要让文件可执行并能够拉取任何更新而不会导致此问题。我可以让脚本删除可执行权限,拉取,然后放回去,但我希望有比这更好的解决方案!

【问题讨论】:

  • 将文件从不可执行更改为可执行对文件的更改。可执行性是 git 需要在文件上跟踪的非常重要的东西。我会检查更改。
  • 我试过这个,但是当我在windows服务器上进行更改时,它神秘地添加了组执行权限,所以我必须再次更改它以删除这些权限。
  • @BenHolness:git 只存储 executablenot executable。如果您不想要 g+x,请更改您的 umask
  • 我不确定 umask 是否在 Windows 中实现,并且我看到了关于标志的奇怪行为。

标签: git file-permissions git-pull


【解决方案1】:

默认情况下,更改文件的权限将被注册为对文件的更改,就像文件中的任何其他更改一样。

如果你不想要这种行为,你可以通过执行来禁用它:

git config core.fileMode false

在您的 git 存储库中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多