Posted at

porcelainオプションでgit statusの出力をmachine-readableにする

More than 3 years have passed since last update.

以下のような見慣れた出力を、他の処理の入力として使いたいとする。

$ git status

On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

modified: first
new file: second

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: first

Untracked files:
(use "git add <file>..." to include in what will be committed)

third

porcelainオプションを使うとファイルごとの出力になる。

$ git status --porcelain

MM first
A second
?? third

フォーマットの詳細は

$ man git-status


補足

porcelainとは磁器のことで、gitのコマンドのうち比較的ユーザーフレンドリーな部分をporcelainと呼ぶ。

ただし--porcelainオプションの機能は、porcelainコマンドを実行することというよりはmachine-readableな出力をさせることのようである。