社内に新人が増えてきたので、弊社のWeb開発でのGitのゆるーい利用方針をまとめます。
なシリーズ第二弾です。
社内環境
- Web系開発がほぼ100%
- ブランチワークはGitflowをベースにしたプルリク駆動開発
- 少人数チームなので、エンジニアは全員LinuxのCUI操作をできて欲しい(vagrantや開発サーバ上の操作など)
- GitのGUIクライアントは、SourceTreeとGithub公式を試しましたが、初学者が使うと却って危ない挙動をしてしまうケースがあったので、全員CUI操作をしてもらうことにしました
- CIツールはまだ導入できず。各サーバーへのデプロイなどもgitコマンドを手動操作してます。
こんな環境なので、みんなGitの操作にはわりかし詳しいです。逆に言えば、うちで開発実務をやっていれば、Git操作ならある程度どこでも通用するレベルになれるはずです!(※個人の感想です)
前置きはここまで。
今回は、Gitをより快適に使いこなすために、個人的にオススメのツールや設定を共有します。
あんまりたくさん紹介してもあれなので、
- 筆者が日常的に使用しているツールの、
- その中でもさらによく使用するめっちゃ使える機能
に絞っています。
(1)Tig
言わずと知れた定番ツール。めっちゃ高機能ですが、
「あれ、自分は今どこをどう編集しているんだっけ?」 っと思ったら迷わずtig
を叩きます。
用途
- 現在のワークスペースのdiff(何をどう編集しているか)を細かく見たい時 (
tig
->s
でステータスビュー)- ステータスビューの利点として、「今コミットしようとしている差分(Changes to be committed)」だけでなく、「コミット対象に含まれていない差分(Changes not staged for commit)」も合わせて見られることです。これが観れることで、「特定ファイルだけをコミットし忘れちゃった・・・」 的な凡ミスがかなり減らせます。
- stashされた内容を見たい時(
tig
->y
)
Mac環境であればHomebrewでサクッと入れてすぐ使えるようになるのも嬉しい。
参考記事: (http://qiita.com/suino/items/b0dae7e00bd7165f79ea)
(2)Git-Completion
gitのタブ補完を有効にしてくれるツール。
コマンドの補完はもちろんですが、強力なのはブランチ名補完 と add対象の絞り込み補完です。
gitコマンドを打つ速度が30%くらい早くなります。
bashスクリプトなので、source
コマンドや.bashrc
に追記すればすぐ使えます。
用途
- ブランチ名を入力する時
- bashの
cd
コマンドと同じように、tabで自動補完 - tabを二連打すれば、候補が出てきます。ブランチ名がうろ覚えでも安心!
- bashの
-
git add
する時- ファイル名がtabで自動補完されるのはbashと同じですが、補完候補を実際に差分があるファイルに絞ってくれます。
- 例えば、
src/
ディレクトリ以下で編集したファイルがsrc/controller/UsersController.php
しかない場合、src/
だけ入力してからTabを連打すると、勝手にsrc/controller/UsersController.php
まで自動的に補完されます。超便利。 - 同様に、TAB二連打 すると、差分があるファイル(ディレクトリ)だけが候補としてでます。これも便利。
- 例えば、
- ファイル名がtabで自動補完されるのはbashと同じですが、補完候補を実際に差分があるファイルに絞ってくれます。
参考記事: (http://mawatari.jp/archives/git-completion-bash)
(3)git push [現在のブランチ]
を git cpush
に割り当て(alias設定)
まだちょっと趣が変わり、こちらは~/.gitconfig
の[alias]
ディレクティブで設定で使える機能です。
詳しいやり方は↓の記事へ。
http://qiita.com/tkengo/items/5bae50fb7531d5a6bbcf
(この設定を記事にしてくれた@tkengo様に惜しみない賞賛を送りたいです!本当に助かっています )
筆者は「現在のブランチをpush」をgit cpush
(current-push)に割り当てています。
用途
-
pushする時は絶対に
git cpush
で!- というのも、開発で
git push
するときの対象ブランチって、ほぼ100%カレントブランチなんですよね。その際に、毎回git push develop
とかならまだしも、git push hotfix/ITPRO-345_for_master
とか、対応するチケットごとに違うブランチ名を入力するのは完全に手間です。(しかも1文字でも間違えるとpushできないというイライラ仕様) - それがブランチ名を気にせず、常に
git cpush
のキータイプ9文字で済むのだから、ノーコストハイリターンです。
- というのも、開発で
以上、絶対に自信を持っておすすめできるgitのプラグイン+設定でした。
「いや、このプラグインも絶対MUSTでしょ!」 と思った方がいましたら、ぜひコメントいただけますと幸いです!