diff --git a/zsh/.zshrc b/zsh/.zshrc index 9b37732..b7e7d19 100644 --- a/zsh/.zshrc +++ b/zsh/.zshrc @@ -83,7 +83,7 @@ fcd() { # clone repository # setopt EXTENDED_GLOB -gc() { +cl() { local url=$1 local ghq_dir="$HOME/ghq" @@ -109,6 +109,29 @@ gc() { git clone $url $project_dir } +# fuzzy find branches and switch to selected branch +gc() { + local selected_branch=$(git branch | fzf | sed 's/^[ \*]*//') + + if [ -n "$selected_branch" ]; then + git checkout "$selected_branch" + else + echo "No branch selected" + fi +} + +# fuzzy find remote branches and switch to selected branch +gcr() { + git fetch + local selected_branch=$(git branch -r | fzf | sed -E 's/^([ \*]*origin\/[\ *]*)*//') + + if [ -n "$selected_branch" ]; then + git checkout "$selected_branch" + else + echo "No branch selected" + fi +} + # get branch if available parse-git-branch() { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'