最近、Gitの環境を整理して使いやすい環境になってきたので記事にしてまとめておこうと思います。
使用している OS は Ubuntu 18.04 です。
シェル
現在使用しているシェルは 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をインストールします。
curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish
リポジトリ操作
リポジトリの移動
私が設定しているGit関連の設定は以下の2つです
- cloneしたリポジトリへの移動
- ブランチ移動
この2つについて、キーバインドで完結できるように設定します。
まずはじめに fzf というコマンドラインで使用できる対話式のフィルタツールを使用します。
これと似たツールにpecoというものもありますが、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での例で紹介されているコマンドを使ってキーバインドでのブランチ移動を実現します。
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
次に、先程作成したコマンドをキーバインドに紐付けます。
bind \cb '__git_branch'
if bind -M insert > /dev/null 2>/dev/null
bind -M insert \cb '__git_branch'
end
fishにログインしなおせばキーバインドの紐付けが完了しているはずなので、Ctrl+bでリポジトリの移動時のような画面で現在のリポジトリのブランチを対話的に切り替える事ができるようになります。
以上で、最近のgit操作今日の紹介は終わりにしようと思います。
これら使っていく中でよりよいものがあれば追記していこうと思います。