Edited at

Gitのチートシートを git ? で呼び出すコマンドを作ると作業が捗る

More than 3 years have passed since last update.

CLIでGit のコマンドやオプションを覚えれば、いろんな所で潰しが効きます。しかし、やりたい事がハッキリしているのに、コマンドが出てこない時、ありません?

いちいち調べるのはバカらしいし、エイリアスにすると他で潰しが効きづらくなるし、SourceTree などのGUIに逃げるのは、なんか負けた気がする……。

そこで、"git ?と打ち込んだら、自分用のチートシートが出てくる Git のサブコマンドを書く" ことにしたのですが、これが意外と捗るのでご紹介します。


"git ?" の作り方

Git では、パスの通った所に git-{コマンド} という名前で実行ファイルを置くと、サブコマンドを独自に作ることができます。

試しに git ? コマンドを作ってみましょう。


コマンド作成

# $PATHを確認

$ echo $PATH

# パスの通った所に git-? を作成 (例: /usr/local/bin/)
$ sudo vi /usr/local/bin/git-?



/usr/local/bin/git-?

#!/bin/sh

cat ~/.git-cheatsheet

# 実行権限を付けておく

$ sudo chmod +x /usr/local/bin/git-?
$ git ?
cat: ~/.git-cheatsheet: そのようなファイルやディレクトリはありません

これでコマンドの準備はできました。

あとは ~/.git-cheatsheet にチートシートの内容を書いていくだけ!


チートシートの例

例えば私は始め、Gitに慣れるために 以下のような感じのチートシートを用意しました。


.git-cheatsheet

---

Git cheatsheet
---
[基本]
* git init リポジトリを作成
* git checkout (branch) ブランチを切り替え
* git branch (new_branch) 新規ブランチを作成
* git checkout -b (new_branch) 新規ブランチを作成して切り替え
* git add (file) ファイルをインデックスに追加
* git add . 現在のディレクトリ以下をインデックスに追加
* git commit ファイルをコミット
* git commit -m "message" メッセージを指定してコミット
* git commit --amend 直前のコミットメッセージを修正

[stash]
* git stash save スタッシュに一時的に保存
* git stash save -u untrack なファイルも含めてスタッシュに保存
* git stash pop スタッシュから取り出し


作業中に Git でちょっと困ったら git ? を叩き、コマンドをカンニングするという訳です。もし新しいコマンドを覚えたくなったら、このチートシートに追記すればOK。

今でも branchcheckout -b のように、"似たような事なのに、コマンドが違う" という時なんかは、なかなか重宝します。

ちなみに私のカンペは、時間が経つにつれてコマンドが増えていき、現在では Git flow や、pruneupdate-index のような込み入ったコマンドも入ってます。学んでいくと共に、チートシートも進化しますね。


invalid key エラーが出る場合

error: invalid key: pager.?

環境によっては、チートシートの表示前に上記のエラーが出てくることがあります。手元では、Gitのバージョンによって出たり出なかったりしてました (例: 2.4.5 →出る、2.6.2 →出ない) 。

恐らく、設定を読み込む際に ? 記号を解釈できるか否かに依るものかと思いますが、これのエラーが出てもチートシートが見られない訳じゃないので、「Gitのパージョンを変えてみる」「気にしない」などが解決策でしょうか。(ぇ


利点

かれこれ1年半ほど使ってますが、


  • 初心者から上級者まで、幅広くカンタンに使える

  • 迷ったら git ? と打つだけなので、覚えやすくお手軽 (深い話は --help で見る)

  • 調べる手間が省け、作業がより捗る

  • コマンドを学んでいる実感がある

自分専用のチートシートを書くのは正直手間ですが、"チートシート = コマンドの意味を学習するノート""という位置づけでやってみると、結構効果があります。

よって、特に Git 初心者にはオススメです。小慣れてきて、git ? を叩く頻度が減ってきたら 一人前とか。