aboutsummaryrefslogtreecommitdiff
path: root/.functions
blob: 07f9afe904dc2ae6b232dcb5427bf1da2248aaab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
fco () {
    local tags branches target
    branches=$(
        git --no-pager branch --all \
            --format="%(if)%(HEAD)%(then)%(else)%(if:equals=HEAD)%(refname:strip=3)%(then)%(else)%1B[0;34;1mbranch%09%1B[m%(refname:short)%(end)%(end)" \
        | sed '/^$/d'
    ) || return
    tags=$(
        git --no-pager tag | awk '{print "\x1b[35;1mtag\x1b[m\t" $1}'
    ) || return
    target=$(
        (echo $branches; echo $tags) \
        | fzf --no-hscroll --no-multi -n 2 --ansi
    ) || return
    git checkout $(awk '{print $2}' <<<$target)
}