Skip to content

Instantly share code, notes, and snippets.

@rodericj
Forked from carmat/Github_terminal.md
Created February 26, 2014 20:23
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rodericj/9237728 to your computer and use it in GitHub Desktop.
Save rodericj/9237728 to your computer and use it in GitHub Desktop.
function gh() {
giturl=$(git config --get remote.origin.url)
if [ "$giturl" == "" ]
then
echo "Not a git repository or no remote.origin.url set"
exit 1;
fi
giturl=${giturl/git\@github\.com\:/https://github.com/}
branch="$(git symbolic-ref HEAD 2>/dev/null)" ||
branch="(unnamed branch)" # detached HEAD
branch=${branch##refs/heads/}
if [ "$1" = "" ]; then ## default => code
giturl=${giturl/\.git/\/tree/}
giturl=$giturl$branch
open $giturl
elif [ "$1" = "-h" ]; then ## -h => help
echo ""
echo "========================================"
echo "Did you know that 'gh' can be used as is?"
echo "There are also some other options, listed below:"
echo " [-h] => View help"
echo " [-c] => View commits"
echo " [-b] => View branches"
echo " [-pr] => View pull requests"
echo " [-i] => View issues"
echo " [-w] => View wiki"
echo " [-s] => View settings"
echo " [-p] => View pulse"
echo " [-g] => View graphs"
echo " [-n] => View network"
echo "========================================"
echo ""
elif [ "$1" = "-c" ]; then ## -c => commits
giturl=${giturl/\.git/\/commits/}
giturl=$giturl$branch
open $giturl
elif [ "$1" = "-b" ]; then ## -b => branches
giturl=${giturl/\.git/\/branches}
open $giturl
elif [ "$1" = "-pr" ]; then ## -pr => pull requests
giturl=${giturl/\.git/\/pulls}
open $giturl
elif [ "$1" = "-i" ]; then ## -i => issues
giturl=${giturl/\.git/\/issues}
open $giturl
elif [ "$1" = "-w" ]; then ## -w => wiki
giturl=${giturl/\.git/\/wiki}
open $giturl
elif [ "$1" = "-s" ]; then ## -w => settings
giturl=${giturl/\.git/\/settings}
open $giturl
elif [ "$1" = "-p" ]; then ## -w => pulse
giturl=${giturl/\.git/\/pulse}
open $giturl
elif [ "$1" = "-g" ]; then ## -w => graphs
giturl=${giturl/\.git/\/graphs}
open $giturl
elif [ "$1" = "-n" ]; then ## -w => network
giturl=${giturl/\.git/\/network}
open $giturl
else
echo ""
echo "========================================"
echo "That option is invalid."
echo "Did you mean:"
echo " [-h] => View help"
echo " [-c] => View commits"
echo " [-b] => View branches"
echo " [-pr] => View pull requests"
echo " [-i] => View issues"
echo " [-w] => View wiki"
echo " [-s] => View settings"
echo " [-p] => View pulse"
echo " [-g] => View graphs"
echo " [-n] => View network"
echo "========================================"
echo ""
fi
}

This is an adaptation of https://twitter.com/jasonneylon script.

In the terminal window, you can open your current repo (at the current branch) in your default browser.

My adaptation was adding options to view the commits, branches, pull requests or issues for the repo using one of the additional options (added support for wiki, settings, pulse, graphs, network):

[-h]  => View help
[-c]  => View commits
[-b]  => View branches
[-pr] => View pull requests
[-i]  => View issues
[-w]  => View wiki
[-s]  => View settings
[-p]  => View pulse
[-g]  => View graphs
[-n]  => View network

Installation

This is a bash script, so it would be recommended that you include it in your ~/.bashrc (or ~/.bash_profile) file.

Using the command line (as it's generally easier than searching for potentially hidden files):

  • $ vi ~/.bash_rc - or use your preferred text editor e.g. mate, subl etc.
  • Paste function gh() { ... } into ~/.bashrc file
    • If you opted to use $ vi, you may need to press a to allow you to edit the file
  • Save .bashrc (you may also close the file)
    • If you opted to use $ vi, save and close the file: ESC and :wq
  • $ source ~/.bashrc - updates the Terminal/Shell with your changes, activating them ready for use

Usage

  • $ gh Open your repo from the command line
  • $ gh -i View/list helper options
  • $ gh -c Open your branches Commits from the command line
  • $ gh -b Open your repo's Branches from the command line
  • $ gh -pr Open your repo's Pull Requests from the command line
  • $ gh -i Open your repo's Issues from the command line
  • $ gh -w Open your repo's Wiki from the command line
  • $ gh -s Open your repo's Settings from the command line
  • $ gh -p Open your repo's Pulse Activity from the command line
  • $ gh -g Open your repo's Graphs/Analytics from the command line
  • $ gh -n Open your repo's Network Graph from the command line

Improvements

I plan on making some improvements to this script (when I get the time to study bash/github a little more):

Show branch-specific Pull Requests

  • Amend elif [ "$1" = "-pr" ]; to only show Pull Requests merging to/from the current branch

Thanks for using

Any thoughts, suggestions or improvements? Let me know https://twitter.com/carmat71

Source: http://jasonneylon.wordpress.com/2011/04/22/opening-github-in-your-browser-from-the-terminal/

N.B. This script works for most* operating systems, although it does involve editing slightly. The only parts that should need editing are wher you see the command open. This is specific to Mac OS. Other OS's will need to be customised like so:

  • Mac open
  • Windows start or cmd /c start
  • Linux/Unix xdg-open
  • Cygwin cygstart

*Mac OS and MS Windows are the only operating sytems I have been able to test.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment