「git」と「git-diff」を使って2つのコミット間で変更されたファイルの名前のみを表示する方法 (日本語)
git と git-diff を組み合わせて、2つのコミット間で変更されたファイルの名前だけをリストアップすることができます。
基本的なコマンド:
git diff --name-only <commit1> <commit2>
- <commit1> と <commit2> は、比較したい2つのコミットのハッシュ値またはリビジョン名を指定します。
例:
- 最新コミットと前のコミットを比較:
git diff --name-only HEAD HEAD^
- 特定のコミットと別のコミットを比較:
git diff --name-only 68a4245 7288c07
オプション:
- ファイルの変更状況も表示:
git diff --stat <commit1> <commit2>
- 特定のファイルタイプをフィルタリング:
git diff --name-only --diff-filter=A <commit1> <commit2> # 新しく追加されたファイルのみ git diff --name-only --diff-filter=D <commit1> <commit2> # 削除されたファイルのみ
さらに詳しい情報:
- git-diffのマニュアル:
git help diff
Gitでファイル変更履歴を確認する方法と、2つのコミット間で変更されたファイル名のみをリストアップする例
2つのコミット間で変更されたファイル名のみをリストアップする
git diff --name-only <commit1> <commit2>
- --name-only オプションをつけることで、ファイルの内容ではなく、変更されたファイルの名前のみが表示されます。
- 特定のコミット同士を比較:
git diff --name-only v1.0 v2.0
ファイルの変更状況も一緒に表示する
git diff --stat <commit1> <commit2>
- --stat オプションを使うと、変更されたファイル数、挿入された行数、削除された行数などの統計情報が表示されます。
git diff --stat v1.0 v2.0
特定のファイルタイプをフィルタリングする
git diff --name-only --diff-filter=A <commit1> <commit2> # 新しく追加されたファイルのみ
git diff --name-only --diff-filter=D <commit1> <commit2> # 削除されたファイルのみ
- --diff-filter オプションを使うと、変更の種類を指定してフィルタリングできます。
- A: 新しく追加されたファイル
- D: 削除されたファイル
- U: 未マージのパス
git diff --name-only --diff-filter=AMDXRTU <commit1> <commit2> # 全ての変更を表示
より詳細な情報を見る
git log --name-status <commit1>..<commit2>
- git log コマンドを使うと、コミット履歴を調べることができます。
- --name-status オプションを使うと、各コミットで変更されたファイルと、その変更の状態(A: 追加、D: 削除、M: 変更など)が表示されます。
git log --name-status v1.0..v2.0
さらに詳しく
- コミットハッシュ: 各コミットに割り当てられる一意な識別子です。
- タグ: 特定のコミットに付ける名前で、ブランチ名のように参照できます。
- ブランチ: 開発中のコードの異なるバージョンを管理するための仕組みです。
これらのコマンドを組み合わせることで、様々な角度からファイルの変更履歴を調べることができます。
より実践的な例:
- 特定のディレクトリ内の変更を調べる:
git diff --name-only --dir-filter=d <commit1> <commit2> src/
- 変更されたファイルに対して処理を実行する:
git diff --name-only <commit1> <commit2> | xargs grep "特定の文字列"
Gitでファイル変更履歴を確認する代替方法
GUIツールを活用する
Git GUIクライアント:
- SourceTree: 直感的な操作で、コミット履歴の視覚化や、変更されたファイルの差分表示が容易に行えます。
- GitHub Desktop: GitHubとの連携に特化したクライアントで、プルリクエストの作成やマージもスムーズに行えます。
- GitKraken: 高機能でカスタマイズ性が高く、視覚的に美しいインターフェースが特徴です。
- Visual Studio Code: 統合開発環境ですが、Gitとの連携が非常に強力で、変更履歴の確認やコミットもスムーズに行えます。
Webベースのツール:
- GitHub: リポジトリのWebインターフェースで、コミット履歴やファイルの変更履歴をブラウザ上で確認できます。
- Bitbucket: GitHubと同様に、WebインターフェースでGitリポジトリを管理できます。
メリット:
- 視覚的な確認: 変更箇所を色分け表示したり、グラフでコミット履歴を表示したりすることで、直感的に変更内容を把握できます。
- 操作の簡便性: コマンドを覚える必要がなく、マウス操作で簡単に操作できます。
- 追加機能: コミットメッセージの編集、プルリクエストの作成など、Gitの様々な機能をGUI上で利用できます。
スクリプトで自動化
シェルスクリプト:
- findコマンド: 特定のディレクトリ内の変更されたファイルを検索できます。
- grepコマンド: ファイルの内容を検索し、変更された行を特定できます。
- diffコマンド: 2つのファイルの差分を表示できます。
- これらのコマンドを組み合わせる: 複雑な検索や処理を自動化できます。
プログラミング言語:
- Python: GitPythonライブラリを使用することで、PythonからGitの操作をプログラムできます。
- Ruby: RubyのGitライブラリを使用することで、RubyからGitの操作をプログラムできます。
- カスタマイズ性: 自分のニーズに合わせてスクリプトをカスタマイズできます。
- 自動化: 定期的な処理や、大量のデータの処理を自動化できます。
- 統合: 他のツールやシステムとの連携が容易です。
- git log: コミット履歴の詳細な情報を表示するコマンドです。
- --name-only: 変更されたファイル名のみを表示します。
- --stat: 変更された行数などを統計的に表示します。
- --oneline: 1行でコミット情報を表示します。
- --graph: コミット関係をグラフで表示します。
- git blame: 各行の最終変更者とコミットハッシュを表示します。
Gitでファイル変更履歴を確認する方法には、コマンドライン、GUIツール、スクリプトなど、様々な方法があります。どの方法を選ぶかは、プロジェクトの規模、チームの状況、個人の好みによって異なります。
どの方法を選ぶべきか?
- 手軽に確認したい場合: GUIツールがおすすめです。
- 複雑な検索や処理をしたい場合: スクリプトがおすすめです。
- コマンドラインに慣れている場合: コマンドラインツールがおすすめです。
選択のポイント
- 目的: 何を知りたいのか?
- 頻度: どのくらいの頻度で確認するのか?
- 規模: プロジェクトの規模はどのくらいか?
- チーム: チームメンバーのスキルレベルは?
git git-diff