Git を自分仕様にして使いやすくしよう

SKIYAKI でエンジニアをしています、akaishi です。みなさま今日も git status していますか? わたしは事ある毎に git status をして現状確認しています。安全第一。

さてその Git を使う上でコマンドを毎日のように打つのですが、 よく打ち間違えたりしてはそんなコマンドねーよと言われたり、delete ボタンの押す回数が増えたりと typo マスターの名を欲しいままにしているわけなんですね。

なので少しでも自分なりの設定をしておくことでそんなことで使う時間を短縮できます。

alias の設定

alias の設定はとても簡単です。今回は git status を設定してみます。

git config --global alias.st status

はい、ドン!これだけで alias の設定が完了です。システム上の全ユーザー全リポジトリに設定する場合は --system にするだけでも可能です。 わたしは --global に設定して .gitconfig で管理する(後述)方式を採用しています。 他にもコマンドを複数渡したりもできるので

git config --global alias.st '!git status && git stash list'

status と stash の中身を同時にチェックできてとても便利です。

サブコマンドの設定

git ではブランチをお手軽に作成ができるのですが、使う上ではプロジェクト単位でブランチを作ったり 機能毎にブランチを作ったりとしているかとおもいます。その位の粒度だとブランチを見渡すことはそんなに苦労はしないのですが、 ブランチを事ある毎に作る癖があるとそのお手軽さ故についついブランチを切りすぎることがあるんですよね。

私がよくやるのが、 (あっ、これ作れそうだから試してみるか・・)git branch feature/a (これ途中だけど作りなおそうかな・・・)git branch feature/aa (既にブランチ名被ってるのか・・・じゃあ 2 を作るか)git branch feature/a2 などと考えなしに作り始めるとあら不思議、似たり寄ったりのブランチ名と増えるばかりのブランチの完成です。

  feature/a
  feature/a2
  feature/aa
* master
  sample/a
  sample/b
  sample/b2
  sample/c2

あー・・・つらいです。よし、機能っぽい名前を付けていこう!と考えなおすわけですね。

  feature/link_check
  feature/link_check2
  feature/link_check_renewal
* master
  sample/add_message_for_admin
  sample/coming_soon
  sample/csv_generate
  sample/remove_myself

よし、なんの機能かはなんとなく想像つくぞ!

とこのへんまではいいのですが、ブランチの切り替え時には補完をしてくれる git-completion.bash を頼りつつでも途中まではブランチ名を打つのが非常に面倒になります。 じゃあ選択してブランチ切り替え出来るサブコマンドを作成したらいいのでは??ということで作成してみました。

git-branch-list

やっていることはブランチ名を取得して番号で選択出来るようにしたサブコマンドです。ブランチ名を手で打つよりは楽出来るはずです。 次にこのサブコマンドをどこでも使えるように準備します。 準備の方法としては - コマンドが実行出来る場所にファイルを配置する - 好きな場所に配置してPATHを通す

のどちらかになるかと思います。今回は単純にコマンドが実行出来る場所にファイルをシンボリックリンクで配置します。

git clone git@gist.github.com:8f1cfe3a9c3e1eb8ead4.git
cd 8f1cfe3a9c3e1eb8ead4
echo `git --exec-path` && ln -s "$(pwd)/git-branch-list" $_

f:id:system-skiyaki:20160229115029g:plain

あとは git のコマンドが実行できるとこで git branch-list checkout などとすると利用が出来るようになります。 これをさらに alias に設定をするとさらに楽になります。

.gitconfig の管理

色々な alias やらサブコマンドを設定して指が慣れてくると、PCを変えた時に再設定が面倒になります。 そのため設定したものを git で管理をするようにしています。要は dotfiles のことですね。 まずはファイルの移動とシンボリックリンクの準備です。

cd ~
mkdir dotfiles
mv .gitconfig dotfiles
ln -sf ~/dotfiles/.gitconfig ~/.gitconfig

あとはよしなに git で管理しておくだけです。

こういった設定を少しずつして自分仕様にすることで打ち間違い防止や入力効率のUPになります。他にもコミットメッセージのテンプレなどのhook の設定もすると快適なGitライフが送れるようになりますね。