0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【git】差分ファイルの抽出

Posted at

業務で差分ファイルのみをzip形式でアップロードする必要があったため、エイリアスを作成しました。
(もっといろんなエイリアスを作っている人はいっぱいいると思いますが、今のところ自分はこれくらいで十分かな)
マスターとの差分を出す場合と、直前のコミットとの差分を出すときのエイリアスとその中身を見ていければと思います。

#エイリアス

..gitconfig
[alias]
    al = !git archive HEAD `git diff --name-only master HEAD --diff-filter=ACMR` -o al.zip
	dif = !git archive HEAD `git diff --name-only HEAD~1 HEAD --diff-filter=ACMR` -o dif.zip

#中身の解説

al = !git archive HEAD git diff --name-only master HEAD --diff-filter=ACMR -o al.zip

##"!"

"!"をつけないとエイリアスの中身に勝手に"git"が入ってしまうため、"!"をつけることで中身がそのまま展開される。

##"git archieve"

git archive [コミットIDなど] -o [ファイル名]

上の形式で指定のコミットを指定のファイル名で出力する。

##git diff --name-only master HEAD --diff-filter=ACMR

git diff [比較ブランチ1] [比較ブランチ2]

でブランチ間の差分を出す。 --name-onlyはファイル名だけを表示させるために必要。
--diff-filter=[]は[]に指定したものをフィルターする。

A:Add=追加
C:Copy=コピー
M:modify=修正
R:Rename=名前変更

つまり上記4つの変更があった差分をファイル名で出力するのが、

git diff --name-only master HEAD --diff-filter=ACMR

まとめると"al"というエイリアスはmasterとHEAD間で「追加」「コピー」「修正」「名前変更」があったファイル名を出力し、git archieveでそれらのファイルをzip形式でまとめている。
Zipが吐き出されるのはそのままだとレポジトリのルート。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?