无需在两次提交中执行此操作,您可以添加文件并在一次提交中将其标记为可执行文件:
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
现在,我们有了一个带有单个可执行文件的提交。