既然你已经标记了这个问题与linux,你可以检查该文件中现在,你已经改变了它在您的计算机上。
% chmod +x script.sh
Git会注意到该文件已经改变:
% git status
On branch old2
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: script.sh
你可以diff来看看这个文件,实际上,现在可执行:
% git diff foo.sh
diff --git a/foo.sh b/foo.sh
old mode 100644
new mode 100755
模式100644
反映了一个不可执行文件,模式100755
反映了一个可执行文件,类似于Unix文件权限位。 (如果您将文件另外更改为更改权限,您也会看到更改。)
当您检查此事件并且您的协作者提取您的更改时,该文件也将变为可执行文件。
注意,这不就没有执行位(即Windows)中的概念,并在该情况下,你会需要做something with update-index
系统自动工作。
注意也这依赖于您的系统配置core.filemode
被正确设置。在所有非Windows系统上,此值应设置为true
。
% git config core.filemode
true
如果由于某种原因,该命令返回false
和你是一个非Windows计算机上运行:
% git config core.filemode true
重新启用它。
如果您将其设置为可执行文件并推送它应该足够。 – PeeHaa
这是新东西吗?情况并非如此。 –
你在Windows上吗?如果没有,Git应该检测可执行位并进行适当的设置。你不应该做任何事情。 –