首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Windows上的Git中创建文件执行模式权限?

如何在Windows上的Git中创建文件执行模式权限?
EN

Stack Overflow用户
提问于 2014-02-11 09:17:06
回答 4查看 274.9K关注 0票数 506

我在Windows中使用Git,并希望通过一次提交将可执行shell脚本推送到git repo中。

通常我需要做两个步骤(git commit)。

代码语言:javascript
复制
$ vi install.sh
$ git add install.sh  
$ git commit -am "add new file for installation" # first commit
[master f2e92da] add support for install.sh
 1 files changed, 18 insertions(+), 3 deletions(-)
 create mode 100644 install.sh
$ git update-index --chmod=+x install.sh
$ git commit -am "update file permission"        # second commit
[master 317ba0c] update file permission
  0 files changed
  mode change 100644 => 100755 install.sh

如何将这两个步骤合并为一个步骤?git配置?windows命令?

提醒:两个答案都不错,git add --chmod=+x file新版本支持

参考:请参阅Git file permissions on Windows中的问题以进行第二次提交

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-11 14:07:49

不需要在两次提交中完成此操作,您可以在一次提交中添加文件并将其标记为可执行:

代码语言:javascript
复制
C:\Temp\TestRepo>touch foo.sh

C:\Temp\TestRepo>git add foo.sh

C:\Temp\TestRepo>git ls-files --stage
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0       foo.sh

正如你所注意到的,在添加之后,模式是0644 (即,不可执行)。但是,我们可以在提交之前将其标记为可执行文件:

代码语言:javascript
复制
C:\Temp\TestRepo>git update-index --chmod=+x foo.sh

C:\Temp\TestRepo>git ls-files --stage
100755 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0       foo.sh

现在文件是模式0755 (可执行文件)。

代码语言:javascript
复制
C:\Temp\TestRepo>git commit -m"Executable!"
[master (root-commit) 1f7a57a] Executable!
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100755 foo.sh

现在,我们有了包含单个可执行文件的单一提交。

票数 776
EN

Stack Overflow用户

发布于 2017-06-30 07:46:33

如果文件已经设置了+x标志,git update-index --chmod=+x什么也不做,git认为没有什么要提交的,即使标志没有保存到存储库中。

您必须首先删除该标志,运行git命令,然后将该标志放回原处:

代码语言:javascript
复制
chmod -x <file>
git update-index --chmod=+x <file>
chmod +x <file>

然后,git会看到一个更改,并允许您提交更改。

票数 43
EN

Stack Overflow用户

发布于 2017-09-10 08:42:39

需要注意的是,首先您必须确定在config git文件中将filemode设置为false,或者使用以下命令:

代码语言:javascript
复制
git config core.filemode false

然后,您可以使用以下命令设置0777权限:

代码语言:javascript
复制
git update-index --chmod=+x foo.sh
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21691202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档