POSTD PRODUCED BY NIJIBOX

POSTD PRODUCED BY NIJIBOX

ニジボックスが運営する
エンジニアに向けた
キュレーションメディア

POSTD PRODUCED BY NIJIBOX

POSTD PRODUCED BY NIJIBOX

ニジボックスが運営する
エンジニアに向けた
キュレーションメディア

FeedlyRSSTwitterFacebook
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つです。

  1. GitのUIの扱いにくさ を取り除く
  2. いくつかの一般的なワークフローを高速化する

例えば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 日本ユーザーグループ代表
複合機メーカー、ゲーム会社を経て、2016年に株式会社リクルートテクノロジーズ(現リクルート)入社。 現在はAPソリューショングループのマネジャーとしてアプリ基盤の改善や運用、各種開発支援ツールの開発、またテックリードとしてエンジニアチームの支援や育成までを担う。 2019年より株式会社ニジボックスを兼務し、室長としてエンジニア育成基盤の設計、技術指南も遂行。 Node.js 日本ユーザーグループの代表を務め、Node学園祭などを主宰。