Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

switch branch in git by partial name

If I have the following branches in git

1194-qa-server
master
remotes/origin/1178-authentication
remotes/origin/1194-qa-server
remotes/origin/HEAD -> origin/master
remotes/origin/master

I want to switch to a branch using --just-- the number, even if that requires calling a script For example:

switch_branch 1178

and the script/solution should do the following

  1. git branch -a (find all branches local and remote in my repository)
  2. filter by the given parameter ('1178' above)
  3. extract the name of the branch that git can use
  4. switch to that branch

What is the recommended way to do it without having to perform all these steps manually?

I am using Mac OSX, if that matters here.

update -- bash-it (github.com/revans/bash-it) serves my purpose

Welcome to Bash It!

Here is a list of commands you can use to get help screens for specific pieces of Bash it:

  rails-help                  list out all aliases you can use with rails.
  git-help                    list out all aliases you can use with git.
  todo-help                   list out all aliases you can use with todo.txt-cli
  brew-help                   list out all aliases you can use with Homebrew
  aliases-help                generic list of aliases.
  plugins-help                list out all functions you have installed with bash-it
  bash-it-plugins             summarize bash-it plugins, and their installation status
  reference <function name>   detailed help for a specific function
like image 654
Ram on Rails React Native Avatar asked Jul 05 '12 08:07

Ram on Rails React Native


1 Answers

There are very few occasions where you'd want to checkout remotes/origin/*. They exist but for the purposes of this shortcut, let's not worry about them. This will get you what you want on OSX:

git config --global alias.sco '!sh -c "git branch -a | grep -v remotes | grep $1 | xargs git checkout"'

You can then issue git sco <number> to checkout a branch that includes <number> but excludes "remotes". You can change sco to be anything you'd like. I just picked it for "super checkout".

Of course this won't work terribly well if you've got more than one branch that matches <number>. It should, however, be a decent starting point.

like image 137
Christopher Avatar answered Oct 22 '22 06:10

Christopher