小编典典

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

all

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

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

$ 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配置?窗口命令?

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

参考:请参阅Windows 上的 Git
文件权限中的
问题以进行第二次提交


阅读 120

收藏
2022-03-10

共1个答案

小编典典

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

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(即不可执行)。但是,我们可以在提交之前将其标记为可执行:

C:\Temp\TestRepo>git update-index --chmod=+x foo.sh

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

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

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

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

2022-03-10