はじめに
最近、自分が設定しているgitのaliasの中で一番長いコマンドってなんだろうと思うことがあったので、実際にコマンドと意味を調べてみました。
aliasは、コマンドの別名を付ける機能で、コマンドの入力量を減らしたり、覚えやすいコマンド名に置き換えるために利用します。
実際に登録してあったalias
私の環境では~/.gitconfig
に設定しているので、包み隠さずに晒します。
st = status -sb
sta = status
sh = show
so = remote show origin
ft = fetch
up = pull --rebase
rbm = rebase master
ad = add
ci = commit
cam = commit -a --amend
co = checkout
cb = checkout -b
cm = checkout master
# branch関連
br = branch
ba = branch -a
bm = branch --merged
bn = branch --no-merged
bo = branch -r
# log関連
wc = whatchanged
ls = log --stat
lp = log -p
la = log --pretty=\"format:%ad %h (%an): %s\" --date=short
lr = log origin
oneline = log --pretty=oneline
ranking = shortlog -s -n --no-merges
# tree表示
logg = log --graph --date=short --abbrev-commit --pretty=format:'%Cgreen%h %cd %Cblue%cn %Creset%s'
loga = log --graph --all --date=short --abbrev-commit --pretty=format:'%Cgreen%h %cd %Cblue%cn %Creset%s %Cred%d%Creset'
# diff関連
df = diff
dif = diff
dm = diff master
dw = diff --color-words
dc = diff --cached
# grep関連
gr = grep
gn = grep -n
sm = submodule
smupdate = submodule foreach "git checkout master; git pull origin master"
show-graph = log --graph --abbrev-commit --pretty=oneline
よく使うものは限られているので使っていないコマンドも多かったです。
(入社当時に、先輩に言われるがままコピーしたのを思い出しました)
当時は呪文としか思っておらず、あまり細かい意味やオプションまで調べようとはしていなかったので、今回は一番長いコマンドに絞って分解して行こうと思います。
※ちゃんと理解した上で当時から使えているのがベストだと思います。。
一番長そうなコマンド
リストの中で、圧倒的に長いコマンドは下記でした。
一つ一つ分解して意味を調べていきます。
log --graph --all --date=short --abbrev-commit --pretty=format:'%Cgreen%h %cd %Cblue%cn %Creset%s %Cred%d%Creset'
git log
Gitでコミットした履歴を確認することができます。
リポジトリに対してコミットした、今までの履歴を表示してくれます。
ここから先のオプションはgit log
実行時を前提に意味を記載していきます。
--graph
ブランチやマージの履歴をツリー形式で表示します。
このオプションによってブランチの分岐やマージ状況がわかりやすくなります。
–oneline,–format
オプションなどを様々なオプションを組み合わせることが可能。
--all
全てのブランチを表示する
--date=short
日付の表示フォーマットを変更できる。
表示フォーマットは、用意されたオプションもしくは任意のフォーマットが設定できる。
今回のオプションであるshort
は時刻を表示しません。
--abbrev-commit
コミットのハッシュ全体ではなく最初の数文字のみを表示する
--pretty
オプションを指定することによってログの出力形式をカスタマイズすることができます。
指定できるフォーマットに関してはこちらをご覧ください。
https://git-scm.com/docs/pretty-formats
今回--prettyオプションで使用しているformat
オプション | 内容 | 例 |
---|---|---|
%h | コミットのハッシュ (短縮版) | 1a2s3d4f4c |
%cd | コミットした日付(形式は--date=オプションに従う) | 2023-06-14 |
%cn | コミットした人の名前 | yamada taro |
%s | 件名 | Merge pull request #12345 from qiita/qiita-test |
%d | 参照名(ref name) | (HEAD -> master) |
まとめ
一通り調べてみて、今回調べたコマンドの命令内容をざっくり日本語で説明してみると。。。
log --graph --all --date=short --abbrev-commit --pretty=format:'%Cgreen%h %cd %Cblue%cn %Creset%s %Cred%d%Creset'
今までのコミット履歴をブランチやマージの履歴等がわかりやすいようにツリー形式で表示してください。
表示情報は、コミットのハッシュ(短縮版)・コミットした日付(時刻はいらない)・コミットした人の名前・件名・参照名で、僕の指定した文字色(黄緑赤)を使ってください
みたいな感じになります!
これで胸を張ってgit のaliasを使用できそうです!!
(--abbrev-commit
は --pretty=format で短縮系のハッシュを指定しているので、必要なさそうでした!)