git ls-tree
でブランチとファイルを確認する
このステップでは、git ls-tree
コマンドを使用して、Git リポジトリ内の特定のブランチとファイルの内容を表示する方法を探ります。このコマンドは、実際にブランチをチェックアウトすることなく、特定の時点または別のブランチでのプロジェクトの状態を調べるのに便利です。
まず、プロジェクトディレクトリにいることを確認しましょう。
cd ~/project/my-time-machine
次に、feature-branch
という名前の新しいブランチを作成し、そのブランチに切り替えます。そこに新しいファイルを追加します。
git branch feature-branch
git checkout feature-branch
echo "This is a new feature." > feature.txt
git add feature.txt
git commit -m "Add new feature file"
コミット後、以下のような出力が表示されるはずです。
[feature-branch a1b2c3d] Add new feature file
1 file changed, 1 insertion(+)
create mode 100644 feature.txt
これで、master
ブランチには存在しない feature.txt
ファイルが含まれた新しいブランチ feature-branch
ができました。
master
ブランチに戻りましょう。
git checkout master
ブランチが切り替わったことを示す出力が表示されるはずです。
Switched to branch 'master'
現在のディレクトリでは feature.txt
ファイルが見えなくなっていることに注意してください。これは、master
ブランチにいるからです。
では、git ls-tree
を使用して、master
ブランチから feature-branch
の内容、特に feature.txt
ファイルの内容を、ブランチを切り替えることなく確認しましょう。
git ls-tree
の基本的な構文は git ls-tree <tree-ish> <path>
です。<tree-ish>
はブランチ名、コミットハッシュ、またはタグになります。<path>
は調べたいファイルまたはディレクトリへのパスです。
feature-branch
のルートディレクトリの内容を表示するには、次のコマンドを使用できます。
git ls-tree feature-branch
以下のような出力が表示され、feature-branch
のルートにあるファイルが示されるはずです。
100644 blob a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 feature.txt
100644 blob f9e8d7c6b5a4938271605f4e3d2c1b0a98765432 message.txt
この出力には、ファイルモード、オブジェクトタイプ(ファイルの場合は blob)、オブジェクトハッシュ、およびファイル名が表示されます。
feature-branch
上の feature.txt
のような特定のファイルの詳細を表示するには、次のコマンドを使用できます。
git ls-tree feature-branch feature.txt
以下のような、feature.txt
に関する出力が表示されるはずです。
100644 blob a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 feature.txt
このコマンドを使用すると、現在の作業ディレクトリを変更することなく、他のブランチや過去のコミットを見て、特定のファイルの状態を確認できます。これは、ブランチ間のファイルを比較したり、過去のバージョンを調べたりするのに非常に便利です。