24
19

More than 5 years have passed since last update.

gitでtag(new)とtag(old)の差分を出力する

Posted at

概要

リリースごとにタグを発行していますが、そのタグの間で差分を出力したかったので作業メモを残す。

<出力したい差分>
・修正されたファイルの一覧 (list.txt)
・各ファイルの修正内容 (diff.txt)
・修正されたファイル一式 (diff.tar.gz)

修正ファイルの一覧

修正ファイルの一覧を「list.txt」に書き出す。

ターミナル
# tag1からtag2で修正されたファイルの一覧を出力する
$ git diff --name-only --diff-filter=AMCRD tag1 tag2 > ./tmp/list.txt

各ファイルの修正内容

修正内容を「diff.txt」に書き出す。

ターミナル
# tag1とtag2の差分を出力する
$ git diff --diff-filter=AMCRD tag1 tag2 > ./tmp/diff.txt

修正されたファイル一式

修正されたファイルを一式「diff.tar.gz」に圧縮して出力する。

ターミナル
# tagとtagの間の差分ファイルを出力する
$ git archive --format=tar.gz --prefix=diff/ tag2 `git diff --name-only --diff-filter=AMCR tag2 tag1` -o ./tmp/diff.tar.gz

上記一式をスクリプト化する

ターミナル
# 作業フォルダ作成
$ mkdir tmp

# 対象を指定する
$ TAG1='hoge-old'
$ TAG2='hoge-new'

# tag1からtag2で修正されたファイルの一覧を出力する
$ git diff --name-only --diff-filter=AMCRD ${TAG1} ${TAG2} > ./tmp/list.txt

# tag1とtag2の差分を出力する
$ git diff --diff-filter=AMCRD ${TAG1} ${TAG2} > ./tmp/diff.txt

# tagとtagの間の差分ファイルを出力する
$ git archive --format=tar.gz --prefix=diff/ ${TAG2} `git diff --name-only --diff-filter=AMCR ${TAG2} ${TAG1}` -o ./tmp/diff.tar.gz

# 差分ファイルを解凍する
$ cd ./tmp/
$ tar zxvf diff.tar.gz

参考サイト

24
19
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
24
19