187
200

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Git使うのに便利なCLIツール

Last updated at Posted at 2020-02-09

背景

日々の業務やらプライベートでのチーム開発で使ってるgit関連のツール紹介です。
gitコマンドは大変便利ですけどそれ以外の周辺ツールを使うことでより便利に使うことができたりします。
(基本的にはmacとlinuxでしか動かしてないですが一部windowsでは使えないものがあります)

スクリーンショット 2020-02-09 14.30.12.png

github/hub

スクリーンショット 2020-02-09 13.38.24.png

github/hub

お馴染みのやつ。
プルリクエストやカレントディレクトリのgithubページを開いたりすると言った動作をCLIから行えます。
GitHubやGitHub Enterpriseを使ってるなるなら入れておくべきかなって思います。
ソースリーディングだけでもgit clone {user}/{repo}でcloneできたりするのでとても便利。

参考記事

インストール

$ brew install hub

# aliasを貼ることを公式でも推奨している
(bash/zsh)$ eval "$(hub alias -s)"

(fish)$ eval (hub alias -s)

基本的な使い方なんかは公式も情報が充実してるのでそちらもご覧ください。

jonas/tig

jonas/tig

ログのツリーを見たり、diffやブランチの枝分かれが綺麗に見れたりするツールです。
操作方法もvim likeで使い方も簡単です。
もちろん操作中にadd や commitを行うことも可能です。

スクリーンショット 2020-02-09 13.43.56.png

tigの細かい設定はtigrcで行うのが慣習となっているようです。
(コピペして使ってるだけなので詳細はわからないですが。。)

tigrc.sample
# set key 'g' / goto file top
bind generic g      move-first-line
# set key 'G' / goto file bottom
bind generic G      move-last-line
bind main    G      move-last-line
# set key 'E'
bind generic E      view-grep
# set key 'F'
bind generic F      ?git fetch %(remote)
bind main    F      ?git fetch %(remote)
# set key 'U'
bind generic U      ?git pull %(remote)
# set key 'C'
bind generic C      !git commit
#bind refs    C      !git commit
bind main    C      !git commit
# set key 'P'
bind generic P      ?git push -u %(remote) %(repo:head)

参考記事

インストール

$ brew install tig

junegunn/fzf

junegunn/fzf

fzfとはインクリメンタルにな検索が可能になるCLIツールです。
git用のツールというわけではないですが組み合わせることで大変便利な機能が満載です。

下記のような関数を定義するだけでfzfを使用してインクリメンタルに曖昧検索をしつつブランチの切り替えなどが行えます。

bashrc
fbr() {
  local branches branch
  branches=$(git branch -vv) &&
  branch=$(echo "$branches" | fzf +m) &&
  git checkout $(echo "$branch" | awk '{print $1}' | sed "s/.* //")
}

同じように以下のように関数を定義すればファイルの差分を表示しつつステージングへ上げると言った操作が簡単に行えたりします。
こう言った情報は公式でもあったりネットに大量にあるのでその辺の入門はとてもしやすくてとても良いです。

bashrc
fga() {
  modified_files=$(git status --short | awk '{print $2}') &&
  selected_files=$(echo "$modified_files" | fzf -m --preview 'git diff {}') &&
  git add $selected_files
}

ちなみに実装はgoです。
他の関数なんかはここにも書いてたりするのでみてみてください。

スクリーンショット 2020-02-09 13.56.33.png

参考記事

インストール

$ brew install fzf

# To install useful key bindings and fuzzy completion:
$ $(brew --prefix)/opt/fzf/install

lazygit

jesseduffield/lazygit

gitコマンド用のシンプルなtuiです。
addやcommitなどの基本操作はもちろん、blame、PRの作成なんかもターミナルから行えます。
キーボード操作のみではなくマウス操作も可能でGUIからの乗り換えも比較的行いやすそうです。

スクリーンショット 2020-02-09 14.01.08.png

参考記事

その他

こちらの作者はgit向けツールだけでなくdocker向けのTUIツールも作成していてこちらも大変便利でおすすめです。コンテナごとのCPU使用率やdocker-compose使用時のログの確認など機能豊富で大変重宝してます。

インストール

$ brew install jesseduffield/lazygit/lazygit

(vimプラグイン)vim-fugitive

tpope/vim-fugitive

cliツールではないvim pluginです。
fugitiveはvim用のgitプラグインです。
vimで編集->commitなどの操作をvimを終了させずに行うことができるようになったりします。
blameやdiffもvimを終了させずに使用することが可能です。

スクリーンショット 2020-02-09 20.21.56.png

インストール

vim pluginマネージャを使用してる場合は以下のように設定してます。

[[plugins]]
repo = 'tpope/vim-fugitive'

keybindは個人的には以下のように設定して使ってます。

vimrc
" ========================↲
" airblade/vim-gitgutter↲
" ========================↲
nnoremap [gitgutter] <Nop>↲
nmap <C-h> [gitgutter]↲
nmap [gitgutter]j <Plug>GitGutterNextHunk
nmap [gitgutter]k <Plug>GitGutterPrevHunk
nmap [gitgutter]u <Plug>GitGutterUndoHunk

まとめ

gitコマンド、githubはたくさんたくさん便利な機能があって覚えられないのでこんな感じでツールを使うことで少しは使いこなせてる感が出て個人的には満足です。

tiimgreen/github-cheat-sheet

便利そうな機能全体は↑で見つけてはtoolで使えないかなって繰り返して使ってる感じなのでいつかしっかり勉強してみたい。。。

187
200
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
187
200

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?