CLIでGit のコマンドやオプションを覚えれば、いろんな所で潰しが効きます。しかし、やりたい事がハッキリしているのに、コマンドが出てこない時、ありません?
いちいち調べるのはバカらしいし、エイリアスにすると他で潰しが効きづらくなるし、SourceTree などのGUIに逃げるのは、なんか負けた気がする……。
そこで、"git ?
と打ち込んだら、自分用のチートシートが出てくる Git のサブコマンドを書く" ことにしたのですが、これが意外と捗るのでご紹介します。
"git ?" の作り方
Git では、パスの通った所に git-{コマンド}
という名前で実行ファイルを置くと、サブコマンドを独自に作ることができます。
試しに git ?
コマンドを作ってみましょう。
# $PATHを確認
$ echo $PATH
# パスの通った所に git-? を作成 (例: /usr/local/bin/)
$ sudo vi /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 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。
今でも branch
と checkout -b
のように、"似たような事なのに、コマンドが違う" という時なんかは、なかなか重宝します。
ちなみに私のカンペは、時間が経つにつれてコマンドが増えていき、現在では Git flow や、prune
、update-index
のような込み入ったコマンドも入ってます。学んでいくと共に、チートシートも進化しますね。
invalid key エラーが出る場合
error: invalid key: pager.?
環境によっては、チートシートの表示前に上記のエラーが出てくることがあります。手元では、Gitのバージョンによって出たり出なかったりしてました (例: 2.4.5 →出る、2.6.2 →出ない) 。
恐らく、設定を読み込む際に ?
記号を解釈できるか否かに依るものかと思いますが、これのエラーが出てもチートシートが見られない訳じゃないので、「Gitのパージョンを変えてみる」「気にしない」などが解決策でしょうか。(ぇ
利点
かれこれ1年半ほど使ってますが、
- 初心者から上級者まで、幅広くカンタンに使える
- 迷ったら
git ?
と打つだけなので、覚えやすくお手軽 (深い話は--help
で見る) - 調べる手間が省け、作業がより捗る
- コマンドを学んでいる実感がある
自分専用のチートシートを書くのは正直手間ですが、**"チートシート = コマンドの意味を学習するノート""**という位置づけでやってみると、結構効果があります。
よって、特に Git 初心者にはオススメです。小慣れてきて、git ?
を叩く頻度が減ってきたら 一人前とか。