Git では、コマンドによって返される結果の典型的な行はgit ls-files -s
次のようになります。
100755 be2c2e9b0966253096472d4b482c458bc892e493 0 .gitignore
これらのフィールドは何を意味しますか?
Git では、コマンドによって返される結果の典型的な行はgit ls-files -s
次のようになります。
100755 be2c2e9b0966253096472d4b482c458bc892e493 0 .gitignore
これらのフィールドは何を意味しますか?
git ls-files
man ページを参照してください。
git ls-files
--stage
が指定されていない限り、ファイル名を出力するだけです。[<tag> ]<mode> <object> <stage> <file>
(--stage
フラグは と同等-s
です。)
これらのフィールドは何を意味しますか?
<mode>
モードビットです。詳細については、git-ls-tree の出力のモード フィールドを読み取る方法を参照してください。<object>
対応する blob の SHA、つまり、問題のファイルのコンテンツの一意の識別子です。<stage>
はステージ番号で、通常は0
ですが、マージの競合があるファイルの場合はゼロ以外の値を取ります。<file>
は単にファイルへのパスです。と の関係
<object>
は<file>
?
ファイルに関連付けられたハッシュの生成には、ファイルの内容 (パス/ファイル名ではなく) のみが使用されるため、これらは完全に独立しています。それを納得させるために、おもちゃのリポジトリで次の実験を行うことができます。
# Set things up
$ mkdir testgit
$ cd testgit/
$ git init
# Write the same contents to two files
$ printf "foo\n" > README.md
$ printf "foo\n" > bar.txt
# Stage the two files and run git ls-files
$ git add .
$ git ls-files -s
100644 257cc5642cb1a054f08cc83f2d943e56fd3ebe99 0 README.md
100644 257cc5642cb1a054f08cc83f2d943e56fd3ebe99 0 bar.txt
2 つのファイルの名前は異なりますが、内容が同じであるため、SHA は同一であることに注意してください。