Git大好き人間のおすすめGit関係のライブラリ

2022.05.15
Git大好き人間のおすすめGit関係のライブラリ

エンジニアリングをする際に切っても切りはせないのがGit操作。

そんなGitを扱うのを便利にするライブラリをご紹介します。


この記事ではCUIでの操作を便利にするライブラリの紹介になります

検証した環境

1 git 2.36.0
2 gh 2.9.0
3 tig 2.5.5
4 ghq 1.2.1

Git関係のおすすめライブラリ

gh

GitHub公式から出ている、GitHubを操作するためのcliコマンド

$ brew install gh



  • PRを作る
  • gistを作成/編集する

といったGitHubに関する操作をコマンドで行う事が出来ます。



以下は公式マニュアルページより引用。

$ gh browse
#=> Open the home page of the current repository

$ gh browse main.go:312
#=> Open main.go at line 312

# issueの作成
$ gh issue create --title "I found a bug" --body "Nothing works"

# PRの作成
$ gh pr create --title "The bug is fixed" --body "Everything works again"

↑に記載している事はごくごく一部で、

GitHubに関する事であればほとんどの事をコマンドで操作出来てしまいそうな印象..!

さすがGitHub!!





tig

CUI上で手軽にgitの操作が出来るツール

$ brew install tig



雑な言い方をするとターミナル上で操作出来るSourceTreeのようなもの。


  • logの確認
  • add
  • commit
  • reset

などなど


基本的な操作はもちろん、


設定ファイルを追加する事で自分なりのカスタマイズも出来て

Git操作がかなり速く出来るようになります!





diff-highlight


gitのdiff表示を文字単位でしてくれるライブラリ

# git-diffはgitコマンドに同梱されているが、使えるようにするためには設定が必要
# 設定方法は以下の記事を参考に



変更点が文字単位になるので分かりやすくなります。

GitHubも diff-hightlight が効いた状態で表示されるし、いずれデフォルトでこのライブラリが設定されると嬉しいなぁ





ghq


gitのリポジトリ管理をしやすくするためのライブラリ

$ brew install ghq



ghq単体だと機能としては弱く

「Git管理しているリポジトリフォルダの一覧を表示する」という機能にとどまってしまいますが

# ghqで管理しているgitリポジトリの一覧を表示
$ ghq list -p
/Users/yuu/src/github.com/Alamofire/Alamofire
/Users/yuu/src/github.com/auth0/auth0-cli
・・・



下記のようにpecofzfのようなインクリメンタルサーチが出来るライブラリと組み合わせる事で、

# ghqでリポジトリ一覧をpecoに渡し、選択したフォルダに移動(cd)する
$ cd $(ghq list -p | peco)

該当のリポジトリフォルダにすぐに移動出来るようになって重宝します!





anyframe

zsh専用のライブラリで、良く利用する関数がパッケージになったもの!

日本人の方が作られたライブラリなんですね

zshでpecoと連携するためのanyframeというプラグインを作った - Qiita


使用可能な関数も↑の記事に一覧で載っています




手動でインストールする方法とAntigenでインストールする方法が公式で記載されています。

mollifier/anyframe: peco/percol/fzf wrapper plugin for zsh


私はzplugを利用しているので.zshrcに以下1行を追加してます

zplug 'mollifier/anyframe'




anyframeで提供されている関数は全てキーバインド、エイリアスに対応!

# キーバインドでanyframeの関数を設定
bindkey '^x^b' anyframe-widget-checkout-git-branch

# エイリアスでanyframeの関数を設定
alias aw=anyframe-widget-cd-ghq-repository

Git以外の関数も入っているので自分が使いたいものがあればちゃちゃっと設定出来ます!




私が実際に使っているのは以下2つ

# ghqで管理しているリポジトリフォルダにインクリメンタルサーチで移動
alias gr='anyframe-widget-cd-ghq-repository'
# インクリメンタルサーチでブランチを変更
alias gc='anyframe-widget-checkout-git-branch'



anyframeの更にいいところは細かいところも設定が出来る点。


例えば私はインクリメンタルサーチにpecoではなくfzfを利用してまして、

anyframeのデフォルト設定のpecoからfzfに変更する事も可能です。

zstyle ":anyframe:selector:" use fzf

おすすめ