皆さんは、ファイルの古いバージョンと新しいバージョンの変更箇所について、確認したいと思ったことはありませんか?
特に、ソースコードのどの部分が変更されているのかわかると作業が捗りますよね。
今回はそんなときに覚えておくと便利なコマンドを紹介します。
ファイルの差分を確認したい...
実はファイルの差分を確認する方法はいくつかあり、例えばVS Codeや、専用ツールなどがあります。
しかしLinuxなどのCUI環境や、検証環境などで手軽に差分を取得したい場合があります。
そこで、今回はdiffコマンドを使用して簡単にファイル差分を取得する方法を紹介します。
今回各種オプションに関しての詳しい説明はしません。
diffコマンドを使う
以下二つのファイルについて差分を表示する
- ファイル1
password p pass hoge
- ファイル2
password AA pass huga
- 基本の使い方
$ diff ABC.text DEF.text 2c2 < p --- > AA 5c5 < hoge --- > huga
- これだけでは結果が見にくいのでオプションをつけて実行する
$ diff -u ABC.text DEF.text --- ABC.text 2020-07-09 13:21:22.000000000 +0900 +++ DEF.text 2020-07-09 13:21:42.000000000 +0900 @@ -1,5 +1,5 @@ password -p +AA pass -hoge +huga
このオプションをつけることで、結果がGitHubの差分表示に近くなるためわかりやすいと感じる人も多いと思います。
- ファイルの差分を左右に並べて比較したい場合のオプション
$ diff -y ABC.text DEF.text password password p | AA pass pass hoge | huga
- これに
-W
オプションを追加することで横幅の指定も可能になります。
$ diff -y -W 30 ABC.text DEF.text password password p | AA pass pass hoge | huga
こうするとぱっと見てどのあたりが変更されたかがわかりやすくなると思います。
最後にプロジェクトファイルなどディレクトリを比較して差分を取りたい場合は-r
オプションが使用できます。
- ディレクトリを比較する
$ diff -r ABC/ DEF/ diff -r ABC/ABC.txt DEF/ABC.txt 2c2 < p --- > AA 5c5 < hoge --- > huga diff -r ABC/hoge/hoge.txt DEF/hoge/hoge.txt 2d1 < 3a3 > diff -r ABC/test.txt DEF/test.txt 3,4d2 < test test < 5a4,5 > > test test
今回は私が普段よく使うオプションに絞って紹介しましたが、他にも便利なオプションが多くあります。
また、manコマンドを使用して$ man diff
とすることで詳しい使い方を見ることができます。
また、一見難しく感じてしまうかもしれませんが、コマンドは実際に使うことで慣れていきます。是非一度他のオプションも調べて使ってみてください。