こんにちは、mito(@mito_works)です。
GitHubでコードのバージョン管理をしていて、運用案件で差分ファイルのみを自動で抽出して納品したい人
Contents
なぜ、差分ファイルの抽出を自動化するのか?
1、2個のファイルを納品する場合は良いのですが、10個以上のファイルを納品する場合、目視&手作業で行っていると納品ミスの原因になります。
安全に、確実に、効率的に納品ファイルを作成するために自動化は必要だと思います。
差分ファイルのリストを作る方法
まずは、納品するファイルのリストを作る方法です。
git diff
コマンドで、2つの差分をとります。
git diff --name-only --diff-filter=d コミット1 コミット2
ローカルリポジトリのファイルパスでターミナルを立ち上げる
macの場合での差分リスト抽出を解説します。
ローカルリポジトリのフォルダ名を右クリックし、「フォルダに新規ターミナル」をクリックします。
差分を指定する
今回は、前回納品したものに対して、新しく納品する分のみ差分を抽出したいので、コミットIDを指定しました。
git diff --name-only --diff-filter=d 1つ前のコミットID 最新のコミットID
コマンド入力後、enterキーを押す
差分ファイル名をエクセルなどにコピー
差分ファイル名を確認し、取得したファイル名をコピ&ペーストでエクセルなどに貼り付けたら完成です。
差分抽出したファイルをzipでまとめる
こちらがいわゆる、自動で納品ファイルを作る方法になります。
git archive コミットID2 `git diff --name-only コミットID1 コミットID2 --diff-filter=ACMR` -o archive1.zip
手順は先ほどと同じく、ターミナルを立ち上げ、上記のコマンドを実行します。
コマンドの解説
git archive
ファイルをアーカイブするコマンド
git diff
差分を抽出するコマンド
--diff-filter=ACMR
A=追加、C=コピー、M=変更、R=リネームのステータスファイルのみ返すというオプションコマンド
-o archive.zip
「archive.zip」というファイル名で生成するというオプションコマンド
まとめ
コマンドを使うことで、納品作業が楽になり、ミスも減ると思います。