1. ホーム
  2. git

[解決済み] WindowsのGitでファイルの実行モードのパーミッションを作成する方法は?

2022-03-18 16:31:45

質問

WindowsでGitを使用していますが、実行可能なシェルスクリプトを1回のコミットでgitリポジトリにプッシュしたいのですが、どうすればよいですか?

通常、私は2つのステップを行う必要があります ( 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

この2つのステップを1つのステップにまとめるにはどうしたらいいでしょうか? gitの設定? windowsのコマンド?

リマインド : 回答は2つで良いです。 git add --chmod=+x file は新しい git バージョンでサポートされています。

参考:以下の質問をご覧ください。 Windows での Git ファイルのパーミッション 2回目のコミット

解決方法は?

2回のコミットで行う必要はありません。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

そして今、私たちは一つのコミットで一つの実行ファイルを手に入れました。