最近のgit操作環境(2019/12/21時点)


最近、Gitの環境を整理して使いやすい環境になってきたので記事にしてまとめておこうと思います。
使用している OS は Ubuntu 18.04 です。

シェル

現在使用しているシェルは fish を利用しています。
fishは構文の強調表示、入力時に入力候補の表示、タブ補完などの機能をデフォルトで使用することができます。

インストール

下記コマンドを実行すれば完了です。

fishのインストール
sudo apt-add-repository ppa:fish-shell/release-3
sudo apt-get update
sudo apt-get install fish

デフォルトのシェルをfishに設定します。

chsh -s $(which fish)

ログインしなおせばシェルがfishに設定されているはずです。

ついでにfishのパッケージを管理するツール、fisherをインストールします。

fisherのインストール
curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish

リポジトリ操作

リポジトリの移動

私が設定しているGit関連の設定は以下の2つです

  • cloneしたリポジトリへの移動
  • ブランチ移動

この2つについて、キーバインドで完結できるように設定します。

まずはじめに fzf というコマンドラインで使用できる対話式のフィルタツールを使用します。
これと似たツールにpecoというものもありますが、fzfではあいまい検索ができるため、こちらを使っています。

ではインストールしていきます。インストールは以下のコマンドで行うことができます。

fzfのインストール
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install --no-bash --no-zsh --key-bindings --completion --update-rc

次に、にcloneしてきたリポジトリを管理する方法として ghq を使います。
ざっくりと説明するとcloneしてきたリポジトリを特定のディレクトリに配置して一括管理できるようにしてくれるツールです。

インストールについてはghqのリポジトリを参考にしてインストールします。

ghqにはghq listというghqでcloneしたリポジトリをリスト表示する機能があるのですが、この機能とfzfのあいまい検索を連携させるためのプラグインをfisherでインストールします。

fisher add decors/fish-ghq

インストール後、Ctrl+Gでghq getで取得したリポジトリがfzfのインターフェースでリストアップされあいまい検索と対話的選択でリポジトリを移動することができるようになります。

リポジトリのブランチ移動

ブランチの移動には gitコマンドとfzfコマンドを組み合わせて移動します。
fzfのwikiにあるfishでの例で紹介されているコマンドを使ってキーバインドでのブランチ移動を実現します。

~/.config/fish/functions/__git_branch.fish
function __git_branch -d "Fuzzy-find and checkout a branch"
  git branch --all | grep -v HEAD | string trim | fzf | read -l result; and git checkout "$result"
  commandline -f repaint
end

次に、先程作成したコマンドをキーバインドに紐付けます。

~/.config/fish/conf.d/keybinding.fish
bind \cb '__git_branch'
if bind -M insert > /dev/null 2>/dev/null
    bind -M insert \cb '__git_branch'
end

fishにログインしなおせばキーバインドの紐付けが完了しているはずなので、Ctrl+bでリポジトリの移動時のような画面で現在のリポジトリのブランチを対話的に切り替える事ができるようになります。

以上で、最近のgit操作今日の紹介は終わりにしようと思います。
これら使っていく中でよりよいものがあれば追記していこうと思います。