Go言語でgit checkoutを補助するコマンドを作った
こんにちは、tkyです。
Go勉強してコマンドを作ってみました。
git checkout
をサポートする gith
というコマンドです。
こんな感じにブランチが選択式で表示されるので選べばそのブランチに移動できるようなものです。
リモートブランチをチェックアウトするときはチェックアウトするブランチ名を決めることができます。
※例えばorigin/developブランチからfeature/XXXXのようなことをできるように
主要モジュール
これがすべてです。対話式のコマンドを完成させるのに一番ラクな方法かと思います。
サンプルも結構あって実際に見て使い方の理解も深まりました。
また今回はコマンドに引数とか細かいことは何もやらないでいたために urfave/cli
使用はしませんでした。
作った経緯など
僕はSourceTreeやGitKrakenなどのGUIツールは使っておらず、CUIでブランチの移動とかcommit, pushなどをしています。
gitでブランチを切り替えながら作業している時に
「あれ〜?あのブランチ名なんだったけ〜??」
となることがよくあります。
例えば「ホーム画面のレイアウトを修正」で
- feature/home_layout
- feature/home_screen_layout
- feature/update_home_layout
なんだったかな〜と・・・ブランチ名をノリで付けている弊害であとで困る典型的なパターンに陥っています。
一応運用回避としてGitHubのIssueで管理している場合、
feature/#{IssueMumber}_your_task_name
という感じでIssue番号をプレフィックスにつけておくと判別できますね。
とはいえやっぱりブランチ名調べて git checkout
する必要があるのでもう少し楽にしたいな〜というところからコマンド作成に至りました。
Goを選んだ理由は「Goだとコマンドが作りやすい」「Goやったことないからやってみたい」です。
Goの勉強方法
Tour of Goやってました。基本ここで学びます。
あとはこちらのスライドで並行で理解していく感じでした。
ざっくりとこの辺を理解してからコマンド作成をはじめました。
- 変数の定義方法
- 関数の定義方法
- for文, if文の定義方法
- ポインタ
- 配列、スライス
- 構造体
※ポインタについてはもともとC言語やってたので何も困ることはありませんでした
おまけ
.bash_profile
とかにこんな感じのことを書いておくと検索文字列に引っかかった一番最初のブランチをチェックアウトする事ができます。
コマンドを作る方法は色々ありますね!
fun gitissue() { git branch | grep $1 -m1 | xargs git checkout }
$gitissue #123
みなさんも自作コマンドで開発を楽にしていきましょう!