1. ホーム
  2. 記事一覧
  3. Gitコマンドgit ls-treeとは?使い方を徹底解説!

2024.04.28

Gitコマンドgit ls-treeとは?使い方を徹底解説!

アプリ開発において「Git」は必須スキルとなってきます。Gitの基本コマンドは知っているけど他のコマンドはよく知らない、Gitコマンドをもっと知って便利に使いたい!と思っている方向けに、この記事では「git ls-tree」を解説します。

GitについてはエンベーダーのLinux応用コースで詳しく学ぶことができます。

https://envader.plus/course/5/scenario/1055

様々なGitコマンドを習得し、Gitマスターを目指しましょう!

「git ls-tree」でできること

  • 指定したローカルブランチのディレクトリ階層をリストアップして表示
  • 以前のローカルブランチのディレクトリ構造を確認したいときなど、ブランチを指定してそのディレクトリ構造を調べることが可能

「git ls-tree」コマンドの開発現場での活用例

  • コードレビューの準備中

    開発者がレビューを行う前に、特定のブランチやコミットに含まれるディレクトリ構造を確認するために使用します。レビュー対象の範囲を把握し、開発者が効率よく効果的にレビューを行うことができます。

  • ディレクトリ構造の確認

    新しいプロジェクトに参加した開発者が、プロジェクト全体のディレクトリ構造を理解したい時に使用します。大規模なプロジェクトの際は、開発者が初期段階でのプロジェクト全体の把握が大切になります。

  • 履歴の調査

    過去のリリース時や、ある特定のコミットが指す時点のプロジェクトの状態を把握する際に使用します。その時点でのプロジェクトの状態を確認することができます。

  • ドキュメントの整理

    プロジェクトのドキュメントを整理する際に、特定のブランチやコミットのファイルリストを作成する際に使用します。ドキュメントが整理されていない、古くなっている可能性のある部分を特定することができます。

「git ls-tree」の使い方

基本操作

git ls-tree 調べたいブランチ名

作業ブランチ上で指定したブランチのディレクトリ階層を調べられます。調べたいブランチにわざわざcheckoutし直さなくても、ディレクトリ階層を調べることができます。

コマンド実行事例

現ブランチの最新状態の「src」ディレクトリ階層を指定した実行結果

git ls-tree HEAD src/
040000 tree 47069b81ac65091941201db6657c6f95ab69eb4d src/components
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 src/dummy.js
040000 tree 1fb8cd0ceedd79fc12f1094cf2f22eb52bd3f579 src/navigation
040000 tree d52520ed74112d3889b8f2a82162000b69c941cc src/screens
040000 tree 47281ed6119d46b950e82ae97d7871cc64d1be4a src/state

最新ブランチより以前のfeature#11のディレクトリ階層を指定した実行結果

この時はsrc/navigationがありませんでした。

git ls-tree feature#11 src/
040000 tree 4d05ff5bfa57fcbf3e6c933758c2302aa24ee76d src/components
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 src/dummy.js
040000 tree ec8cf6c6a2ac7d92a542acb5bfd989265d39159a src/screens
040000 tree 47281ed6119d46b950e82ae97d7871cc64d1be4a src/state

出力内容の詳細

  • 040000 tree

    git上でディレクトリを表します

  • 100644 blob

    git上でファイルを表します

  • 47069b81ac65091941201db6657c6f95ab69eb4d

    git上でのオブジェクトのハッシュ値を表します

「git ls-tree」のオプション紹介

git ls-treeのオプションはいくつかありますが、その中から今回は以下の4つを紹介します。

  • -d
  • -r
  • -l
  • —name-only

-d

指定したディレクトリ構造の中で、ディレクトリのみを表示します。このオプションを付けることで、ファイルデータは無視され、ディレクトリのみがリストアップされます。

オプション-dをつけて実行した結果

オプション無しではリストアップされていたsrc/dummy.jsはファイルデータのため無視され、リストアップされません。

git ls-tree -d HEAD src/
040000 tree 47069b81ac65091941201db6657c6f95ab69eb4d src/components
040000 tree 1fb8cd0ceedd79fc12f1094cf2f22eb52bd3f579 src/navigation
040000 tree d52520ed74112d3889b8f2a82162000b69c941cc src/screens
040000 tree 47281ed6119d46b950e82ae97d7871cc64d1be4a src/state

オプション無しで実行した結果

git ls-tree HEAD src/
040000 tree 47069b81ac65091941201db6657c6f95ab69eb4d src/components
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 src/dummy.js
040000 tree 1fb8cd0ceedd79fc12f1094cf2f22eb52bd3f579 src/navigation
040000 tree d52520ed74112d3889b8f2a82162000b69c941cc src/screens
040000 tree 47281ed6119d46b950e82ae97d7871cc64d1be4a src/state

-r

指定したディレクトリ構造の中で、全てのサブディレクトリとファイルデータがリストアップされます。このオプションを使用することで、ディレクトリの構造を詳細に調査したり、特定のファイルデータがどのディレクトリに存在するかを調べることができます。

オプション-rをつけて実行した結果(src/componentディレクトリを指定)

src/components内のファイルデータが全てリストアップされます。

git ls-tree -r HEAD src/components
100644 blob 487fa0d5c06f03bd849cbe34739bfff7825ed08c src/components/Footer.jsx
100644 blob aeb1217e56604dcda43b1e533df10d28682cab2b src/components/GrayButton.jsx
100644 blob efa865db478559b110c49ec9ef458dbb332a13f3 src/components/Terms.jsx
100644 blob 2de03f5be8cff99f72e558cfb6417f3da60510b3 src/components/TermsModal.jsx
100644 blob cabfcd7729febf02d3fe5ad9946e8fe674af7374 src/components/YellowButton.jsx

-l


指定したディレクトリ構造の中で、表示される各ファイルデータのサイズ情報を付加してリストアップされます。出力結果には、各ファイルエントリの末尾にサイズがバイト単位で表示されます。データサイズが表示されるのはファイルデータのみで、ディレクトリはサイズの表記はされません。下記出力結果のassetsやsrcはディレクトリということが分かります。

git ls-tree -l HEAD
100644 blob 1ed453a371ba5c23ea9e365f9a6984d6aec0a13e 134 .editorconfig
100644 blob af3ad128122dfe2a143df207c66884380fd888d4 142 .gitattributes
100644 blob 3a917c04d3f18bd2ae86e0ac59f886885c923c1b 490 .gitignore
040000 tree 631944ecc64154b4e52a80d21f862cb3f3394b1e - .yarn
100644 blob 3186f3f0795ab612d5508593672dc9ad94bccca0 25 .yarnrc.yml
100644 blob dd80eb7928a63d9bcb1c38401558146b145ed7ad 2579 App.js
100644 blob 68188337de7c0ec7d6bba440f52918e679cfc374 12 README.md
100644 blob 22c6aca1d971f64f86636272f1276d7dc97f4e1d 627 app.json
040000 tree 75ca08820f2105166730a393c949db4b3105cd1f - assets
100644 blob 2900afe9d85a54cf9552ec0b4107665c5c10e078 107 babel.config.js
100644 blob a33a5fba92c9badfd08c5a65dce82f600ef1f799 461609 package-lock.json
100644 blob 433e70cdd2d45817b3451a4671cb6acc86afc58c 1074 package.json
040000 tree ee6de3ae4a407e0776d798ace1b836a22e4a5d90 - src
100644 blob 553fb04612c77b533e9d0c85aeb8a63425ffcb94 552 tailwind.config.js
100644 blob 4eb8d160a8b857cbff017b2bf5c5921fd9d83017 578 theme.js
100644 blob a869e810856b6394fd1aa6b819287f79730148c9 293404 yarn.lock

--name-only

指定したディレクトリ構造に含まれるファイルデータやディレクトの名前のみがリストアップされます。

git ls-tree --name-only HEAD src/
src/components
src/dummy.js
src/navigation
src/screens
src/state

指定したディレクトリ構造に含まれるファイルデータやディレクトの名前のみをフルパスでリストアップをしたい場合、--name-only--full-nameの2つのオプションを合わせることで表示が可能になります。—full-nameはファイルデータやディレクトリのフルパスを含んでリストアップするオプションです。

git ls-tree --name-only --full-name HEAD src/
project/src/components
project/src/dummy.js
project/src/navigation
project/src/screens
project/src/state

まとめ

この記事ではGitコマンドの中のgit ls-treeについて学びました。git ls-treeは、調べたいディレクトリ構造をコマンド1つで素早く表示することができます。オプションを併せることでディレクトリ構造のリストアップの効率化が計れ、開発スピードを上げることができるコマンドの1つです。実際にコマンドを実行して理解を深めましょう!

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事