aboutsummaryrefslogtreecommitdiff
path: root/.functions
diff options
context:
space:
mode:
authorGuangxiong Lin <[email protected]>2021-09-20 20:43:32 +0800
committerGuangxiong Lin <[email protected]>2021-09-20 20:43:32 +0800
commit7e162147d967dd63dff24ac24bf190d868ef4d29 (patch)
treebbea3b57f26688977097158bbb3615b1c1ce4a8c /.functions
parent2b03177ac4ec96972eb59a33db32f9f93a1341b0 (diff)
downloaddotfiles-7e162147d967dd63dff24ac24bf190d868ef4d29.tar.gz
dotfiles-7e162147d967dd63dff24ac24bf190d868ef4d29.tar.bz2
dotfiles-7e162147d967dd63dff24ac24bf190d868ef4d29.zip
Add function fco
Diffstat (limited to '.functions')
-rw-r--r--.functions16
1 files changed, 16 insertions, 0 deletions
diff --git a/.functions b/.functions
new file mode 100644
index 0000000..07f9afe
--- /dev/null
+++ b/.functions
@@ -0,0 +1,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)
+}