2016年5月20日
人間らしいGitのエイリアス
(2016-04-25)by George Gritsouk
本記事は、原著者の許諾のもとに翻訳・掲載しております。
断固としてコンピュータ言語を拒絶する
私の知っている最も一般的な .gitconfig
は、ユーザ名の設定だけが記されたものです。そして、その次に一般的なものはこれです。
[alias]
ci = commit
cia = commit -a
cam = commit --amend
cama = commit --amend -a
cl = clean
cldf = clean -df
res = reset
resa = reset HEAD
...
# 82 more 4-character aliases
このコンフィグは、要するにあなたの頭の中のスペースをキーストロークに置き換えます。短縮コマンドのエイリアスを覚えれば、タイピング数の節約が可能です。しかし私はこれが好きではありません。私はタイプミスをしますし、睡眠不足なこともたまにあるので、このエイリアスではやりづらくなってしまうことが殆どです。コンピュータ言語に屈して私が適応するのではなく、コンピュータ言語の方が私のやり方を学ぶべきです。 シェルのオートコンプリート機能 もあるので、私はそれほど短縮コマンドにはこだわっていません。その代わりに、リアルな言葉を使って全ての作業をより人間らしくしたいと思っています。
Gitのエイリアスを使った私の目標は次の2つです。
- GitのUIの扱いにくさ を取り除く
- いくつかの一般的なワークフローを高速化する
例えばGitでは、何かのリストをリポジトリから取得しようとすることは、何とも一貫性がありません。私はこれを修正しました。
branches = branch -a
tags = tag
stashes = stash list
取り消す場合の一般的な操作についてはどうでしょうか? 私はGoogleに”ファイルをアンステージする方法”を聞いてみようとは決して思いません。恐らく、よく分からないコマンドが出てくるでしょう。
unstage = reset -q HEAD --
discard = checkout --
uncommit = reset --mixed HEAD~
amend = commit --amend
より強力なバージョンもあります。
nevermind = !git reset --hard HEAD && git clean -d -f
これでインデックス内の変更をアンステージし、作業ディレクトリの変更を取り消し、新しいファイルを削除することができます。
また、私は次のものも非常に気に入っています。
graph = log --graph -10 --branches --remotes --tags --format=format:'%Cgreen%h %Creset• %<(75,trunc)%s (%cN, %cr) %Cred%d' --date-order
いつ誰がどのような操作をしたのかが分かる、リアルタイムのタイムラインを見ることができます。さらに以下も良い例です。
precommit = diff --cached --diff-algorithm=minimal -w
これが私のワークフローの鍵となる部分です。コミットする前に 毎回 これを実行し、取り消しコマンドを使う必要がないことを確認しています。
コンピュータ言語に屈するのではなく、自分の考え方と作業方法にエイリアスを屈服させてください。キーストロークを節約するだけでなく、自分にとっての価値をエイリアスに反映させましょう。
Redditのコメントから、この記事への素晴らしい提案をいくつか頂きました。
Kasbah さんからの unmerged = diff --name-only --diff-filter=U
と、 WrongSubreddit さんからの remotes = remote -v
が私のお気に入りです。どうもありがとうございます。
私のGitエイリアスの全リストは dotfilesのレポート に載せています。
株式会社リクルート プロダクト統括本部 プロダクト開発統括室 グループマネジャー 株式会社ニジボックス デベロップメント室 室長 Node.js 日本ユーザーグループ代表
- Twitter: @yosuke_furukawa
- Github: yosuke-furukawa