Git でファイルに chmod 権限を追加するにはどうすればいいですか? 質問する

Git でファイルに chmod 権限を追加するにはどうすればいいですか? 質問する

ファイルを git commit します.shが、同じファイルを別のサーバーでチェックアウトするときに実行可能にしたいと思います。

chmod u+xファイルをチェックアウトするサーバーでそのファイルを手動でチェックアウトせずにこれを行う方法はありますか?

ベストアンサー1

によると公式文書update-indexサブコマンドを使用して、追跡対象のファイルの「実行可能」フラグを設定または削除できます。

フラグを設定するには、次のコマンドを使用します。

git update-index --chmod=+x path/to/file

削除するには、次を使用します。

git update-index --chmod=-x path/to/file

フードの下

これは通常の UNIX ファイル権限システムのように見えますが、実際は違います。Git は内部ストレージ内の各ファイルに対して特別な「モード」を維持します。

  • 100644通常のファイルの場合
  • 100755実行可能なもの

ls-fileオプション付きのサブコマンドを使用して視覚化できます--stage:

$ git ls-files --stage
100644 aee89ef43dc3b0ec6a7c6228f742377692b50484 0       .gitignore
100755 0ac339497485f7cc80d988561807906b2fd56172 0       my_executable_script.sh

デフォルトでは、リポジトリにファイルを追加すると、Gitはそのファイルシステムの属性を尊重し、それに応じて正しいファイルモードを設定しようとします。これを無効にするには、core.fileModeオプションをfalseにする:

git config core.fileMode false

トラブルシューティング

ある時点で Git ファイルモードが設定されていないが、ファイルに正しいファイルシステム フラグがある場合は、モードを削除して再度設定してみてください。

git update-index --chmod=-x path/to/file
git update-index --chmod=+x path/to/file

ボーナス

Git 2.9 以降では、1 つのコマンドでファイルをステージングし、フラグを設定できます。

git add --chmod=+x path/to/file

おすすめ記事