gitには6つの8進数ファイル権限があります。どういう意味ですか?

gitには6つの8進数ファイル権限があります。どういう意味ですか?

コマンドを実行しましたが、次のgit commitような応答を受けました。

7 files changed, 93 insertions(+), 15 deletions(-)
mode change 100644 => 100755 assets/internal/fonts/icomoon.svg
mode change 100644 => 100755 assets/internal/fonts/icomoon.ttf
mode change 100644 => 100755 assets/internal/fonts/icomoon.woff

私は、ファイルが「644」または「755」のような3つの8進数で表現できるユーザー/グループ/その他のrwx権限を持つことができることを知っています。しかし、なぜgitは6桁の数字を表示するのですか?

次の記事を読みましたが、答えが見つかりませんでした。

ベストアンサー1

表示される値は16ビットファイルモードです。Gitによって保存されました、レイアウトに応じてPOSIXのタイプとパターン:

  32-bit mode, split into (high to low bits)

    4-bit object type
      valid values in binary are 1000 (regular file), 1010 (symbolic link)
      and 1110 (gitlink)

    3-bit unused

    9-bit unix permission. Only 0755 and 0644 are valid for regular files.
    Symbolic links and gitlinks have value 0 in this field.

ファイルにはディレクトリへの言及はなく、オブジェクトタイプ0100を使用して表示されます。のためのGitlinkサブモジュール

6ビット値の各ビットは8進数で、3ビットを表します。したがって、16ビットには6桁が必要で、最初の数字は1ビットのみを表します。

Type|---|Perm bits

1000 000 111101101
1 0   0   7  5  5

1000 000 110100100
1 0   0   6  4  4

Gitは任意のパターンを保存せず、通常のPOSIXタイプとパターン(8進数、シンボリックリンクの場合は12、一般ファイルの場合は10、ディレクトリの場合は04)を使用する値のサブセットのみを受け入れます。GitはGitのリンクに16を追加します。パターンを追加するには、4つの8進数を使用してください。ファイルの場合は100755または100644(技術的には100664も可能)、ディレクトリの場合は040000(権限は無視されます)、シンボリックリンクの場合は120000のみが表示されます。 set-user-ID、set-group-ID、および固定ビットはまったくサポートされていません(未使用ビットに格納されています)。

また、見ることができますこの関連回答

おすすめ記事