コーディングの勉強

【GitHub】gitコマンドで差分納品をする方法〜応用編〜

こんにちは、mito(@mito_works)です。

momo
momo
前回、GitHubを使ってコードのバージョン管理する方法をお伝えしました。
mito
mito
今回は、「管理」しているものを「納品」するためにコマンドを使う方法ですね!
momo
momo
そう!少し抵抗がる人がいるかもしれないけれど、黒い画面(ターミナルor コマンドプロンプト)を使って必要な差分ファイルのみを納品していく方法を解説するよ!
こんな人におすすめ

GitHubでコードのバージョン管理をしていて、運用案件で差分ファイルのみを自動で抽出して納品したい人

【GitHubDesktop】Githubでコードの履歴を管理する〜基本編〜 Gitとは CUIツール(コマンドラインツール)の一種です。 ソース...

なぜ、差分ファイルの抽出を自動化するのか?

1、2個のファイルを納品する場合は良いのですが、10個以上のファイルを納品する場合、目視&手作業で行っていると納品ミスの原因になります。

momo
momo
極力楽をしつつ、ミスを減らしたいよね

安全に、確実に、効率的に納品ファイルを作成するために自動化は必要だと思います。

差分ファイルのリストを作る方法

まずは、納品するファイルのリストを作る方法です。

git diff

コマンドで、2つの差分をとります。

git diff --name-only --diff-filter=d コミット1 コミット2

mito
mito
「コミット1」「コミット2」の部分は抽出したい差分が抽出できるように指定するよ
mito
mito
例えば、コミットIDなどですね!

ローカルリポジトリのファイルパスでターミナルを立ち上げる

macの場合での差分リスト抽出を解説します。

ローカルリポジトリのフォルダ名を右クリックし、「フォルダに新規ターミナル」をクリックします。

momo
momo
ターミナルが立ち上がるね!

差分を指定する

今回は、前回納品したものに対して、新しく納品する分のみ差分を抽出したいので、コミットIDを指定しました。

mito
mito
前方に書くコミットID(①コミットID)の方が古いバージョンです

git diff --name-only --diff-filter=d 1つ前のコミットID 最新のコミットID

momo
momo
コミットID以外でもブランチ名やタグ名などで指定可能だよ

コマンド入力後、enterキーを押す

mito
mito
非表示にしている部分もあるのでわかりづらいとは思いますが、今回は2つのhtmlファイルが取得できています。

差分ファイル名をエクセルなどにコピー

差分ファイル名を確認し、取得したファイル名をコピ&ペーストでエクセルなどに貼り付けたら完成です。

差分抽出したファイルをzipでまとめる

こちらがいわゆる、自動で納品ファイルを作る方法になります。

git archive コミットID2 `git diff --name-only コミットID1 コミットID2 --diff-filter=ACMR` -o archive1.zip

mito
mito
この様に書くと先ほど一覧で取得したファイルの実態を取得し、zip化してくれます。

momo
momo
かなり便利だね!

手順は先ほどと同じく、ターミナルを立ち上げ、上記のコマンドを実行します。

momo
momo
zipファイルができる場所は、ファイルパスとして指定しているローカル時ポジトリの配下だよ!

コマンドの解説

git archive

ファイルをアーカイブするコマンド

git diff

差分を抽出するコマンド

--diff-filter=ACMR

A=追加、C=コピー、M=変更、R=リネームのステータスファイルのみ返すというオプションコマンド

-o archive.zip

「archive.zip」というファイル名で生成するというオプションコマンド

まとめ

コマンドを使うことで、納品作業が楽になり、ミスも減ると思います。

 

ABOUT ME
mito
こんにちは!mitoです。 フロントエンド開発、デザイン全般をやっているクリエイターです。 学ぶことと教えることが好きです。 子育てをする中で、自分の生活に働き方を合わせたいと思うようになり、2020年4月からフリーランスになりました。 好奇心旺盛でやりたいこと多め、ワクワクすると止まれない性格です。 同じように一緒にチャレンジする人の背中そっと押せたり、励ましあえるようなブログになるといいなと思っています。