アプリ開発において「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つです。実際にコマンドを実行して理解を深めましょう!
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2024.06.02
コードを書いたのが誰かわかる超便利コマンド「git blame」の使い方を解説
コードの変更を誰が行ったのか簡単に確認したい!という方向けに、この記事では「git blame」を解説します。
- git
2024.08.24
git checkout と git switch それぞれの使い方を比較する
この記事では、switchコマンドの基本的な使い方と機能を紹介します。また、checkoutコマンドとの比較を行い、両者の違いとそれぞれのコマンドが適した使用状況について解説します。最後に、switchコマンドを使った実践的な使用例とベストプラクティスを提供します。
- PC操作
- git
2024.05.08
リリース管理に欠かせない!コミットにタグを付ける「git tag」コマンドの使い方
アプリ開発において「Git」は必須スキルとなってきます。Gitの基本コマンドは知っているけど他のコマンドはよく知らない、Gitコマンドをもっと知って便利に使いたい!と思っている方、また特定のコミットに普遍的な目印をつけたい!や、リリースバージョンを管理したい!という方向けに、この記事では「git tag」について解説します。
- git