0
0

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.

peco を使ってブランチのチェックアウトを行う (リモートブランチ と ローカルブランチ)

Last updated at Posted at 2020-10-11

peco を使ってブランチのチェックアウトを行う (リモートブランチ と ローカルブランチ)

https://qiita.com/m-tmatma/items/6bb6b7c8a515a5424843 の改良版。

gist

リモートブランチ

スクリプト

coremote () {
    remotename=`echo $1 | sed -r "s#([^/]+)/.*#\1#"`
    branchname=`echo $1 | sed -r "s#[^/]+/##"`
    
    git branch | grep "..$branchname$"
    if [ $? = 0 ]; then
         git checkout    $branchname
    else
         git checkout -b $branchname $remotename/$branchname
    fi
}
alias cor='export -f coremote; coremote $(git branch -r | grep -v "/HEAD" | peco)'

改善ポイント

  • リモートブランチに対応するローカルブランチが存在したら、新たにブランチは作らずに既存ブランチをチェックアウトする。
  • origin/HEAD の行を除外する。
  • xargs をやめて $(コマンド) にした

初版は以下のようにしていた。

alias cor='export -f coremote; git branch -r | grep -v "/HEAD" | peco | xargs -I{} bash -c "coremote {}"'

使い方

$ cor

上下キーあるいは検索文字列を入力してチェックアウトしたいリモートブランチを指定する。
もしローカルに同一名のブランチが存在したらそのローカルブランチをチェックアウトする。
もしローカルに同一名のブランチが存在しなかったリモートブランチを同一名のローカルブランチを作成してチェックアウトする。

ローカルブランチ

スクリプト

colocal () {
    branchname=`echo $1 | sed -r "s#^../##"`
    git checkout    $branchname
}
alias col='export -f colocal; colocal $(git branch | peco)'

改善ポイント

  • xargs をやめて $(コマンド) にした

初版は以下のようにしていた。

alias col='export -f colocal; git branch | peco | xargs -I{} bash -c "colocal {}"'

使い方

$ col

上下キーあるいは検索文字列を入力してチェックアウトしたいローカルブランチを指定する。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?