はじめに
現場によっては、**「開発環境はGit管理だけど、テスト環境への反映はFTPでファイルアップロード」**という運用をしているケースがあると思います。
そんなとき、修正したファイルをテスト環境にアップロードするために、「どのファイルを変更したっけ?」と確認する必要がありますが、以下のような悩みはありませんか?
- コミットログを一つずつ確認するのは手間。
- 同じファイルを何度も修正していると、コミット単位では重複が発生してリストアップが面倒。
- GitのGUIツールだと、パスのコピーがしづらい。
そこで、**「現在の作業ブランチとmaster(またはmain)ブランチの差分ファイルのみを、ファイル名ベースで一覧出力する」**コマンドをメモとして残しておきます。
結論:このコマンドを使う
以下のコマンドを実行すると、変更があったファイルパスだけがズラッと出力されます。
Bash
# masterブランチの場合
git diff master...HEAD --name-only
# mainブランチの場合
git diff main...HEAD --name-only`
実行結果
Laravelプロジェクトでの出力イメージです。
app/Http/Controllers/Admin/UserController.php
app/Http/Requests/UserRequest.php
app/Models/User.php
database/migrations/2024_02_03_000000_add_columns_to_users_table.php
resources/views/admin/user/index.blade.php
resources/views/admin/user/edit.blade.php
routes/web.php
これなら、FTPクライアントでアップロードする際に、どのディレクトリのどのファイルを探せばいいか一目瞭然です。
解説
コマンドのオプションについての簡単な解説です。
-
master...HEAD(ドット3つ)- 派生元(master)と現在のブランチ(HEAD)の共通の祖先から、現在までの変更分を抽出します。
- 単に
masterと書くよりも、ブランチを切ってからの純粋な差分を取りやすい指定方法です。
-
-name-only- コードの差分(diff)は表示せず、変更されたファイルの名前(パス)のみを表示するオプションです。
おまけ:エイリアスに登録しておくと便利
毎回打つのが面倒な場合は、.gitconfig にエイリアスを登録しておくと幸せになれます。
Ini, TOML
[alias]
# 'git diff-list' で実行できるようになる
diff-list = diff master...HEAD --name-only
まとめ
FTPアップロード作業は手動だとミスが起きやすいですが、このコマンドでリスト化しておけば、「アップロード漏れ」や「不要なファイルの確認」の手間がぐっと減ります。
同じような境遇の方の参考になれば幸いです。
参考文献
Geminiさん