日々精進

新しく学んだことを書き留めていきます

すべてのリモートリポジトリのbranchをcheckoutし、pullする

Pull Requestをレビューする時に、リモートリポジトリからレビュー対象のブランチを探してチェックアウトして、すでにチェックアウトしてたらpullして・・・という一連の作業を効率化したいと思い、ローカルのすべてのbranchの状態をリモートと一致させるfunctionを作ってみた。
ちょっとおおざっぱすぎるかなという気がするけど、しばらく使ってみよう。

function git-checkout-remote-all(){
    for remote_branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do
        remote_name="$(echo -n "$remote_branch" | cut -d/ -f2)"
        branch_name="$(echo -n "$remote_branch" | cut -d/ -f3-)"
        git checkout -b $branch_name $remote_name/$branch_name
        git checkout $branch_name
        git pull
    done
}

参考:gitでリモートブランチをすべて取得するシェルスクリプト - Qiita