hub is a nice commandline tool for interfacing with Github’s features that’s intented to use as an extension of commandline git. It can save a lot of browser-and-mouse interaction and I really love how it fits in my toolbox during everyday development. This is a short, personal blogpost on how I use
hub and the features that stand out for me personally – your workflow may vary!
I use a Mac, so it was a matter of
brew install hub, check out project’s readme for instructions on Linux or Windows.
On a first run it will ask you to authorize GitHub API access. You can safely trust it since it’s an official tool provided by GitHub Team.
hub passes over
git’s commands to actual git, it’s a good idea to alias
git, so that known aliases, mnemonics and muscle memory still work while being able to use
hub’s additional features.
Believe me you can do a lot with it. If you learn it fully you can:
clone any-profile/repository-namewithout providing full GitHub cloning path. Same trick works also for adding new
remote add profile/repo
push multiple,origin,locationswhich is super handy if doing some extra management and keeping multiple repositories in sync and it also works with
merge <PULLREQ-URL>with same message as would be normally done on GitHub. Which when pushed will close the existing PR.
- Plus a lot more new
pr listto navigate through your list of Pull Requests and
pr showto open immediately the Pull Request page in your favorite browser.
issuehelps you to manage, view and list repository issues.
syncto keep in fast-forward sync all local branches.
releaseto ship new builds of code straight to GitHub. Sample script
deleteto make or destroy repositories on your GitHub account
browseto open repository page or change-set in your browser
What I use it for
In one project we have a lot of small repositories, cloning them via ssh is now a matter of issuing:
git clone project/repo-name
I don’t have to go to GitHub repository page and copy the full path to checkout repository locally. If I want to open the project in browser then I just type:
git open and in the browser I can see exactly the same branch I had opened on my local machine.
Navigating branches and doing a code review
Sometimes for a code review I need to open the code locally. With
hub I can do it without opening the browser.
$ git pr list #5 Improved images handling ready for review #4 Test tool. WEB UI to handle Customizations. wip
And then to checkout the branch locally in
code-review branch I use
git pr checkout 5 code-review
Whenever I need to view the PR in browser I can type:
git pr show.
I can easily merge the pull-request’s branch in plain console. So let’s first copy the PR link to clipboard:
git pr show -c and then checkout the upstream:
git checkout develop. Now we are ready to merge the pull request and push it to upstream:
$ git merge <PULLREQ-URL from clipboard> $ git push
The merge command also works with
--squash argument if needed. This way we achieved the ability to perform entire flow of working with pull request without leaving the console.
Creating pull requests
But there is more and
hub allows to make a new PR. After running:
$ git pull-request -b develop -m 'Your PR title' -l "wip" -a Jim -c
It will make the brand new PR with base branch set as
develop with message as specified, particular label and even assignment. Last argument will copy the PR link to clipboard so it will be very fast to paste the PR on your team Slack or wherever you’d like to. I encourage you to examine all options that are possible for the
Checking build status
When we have a PR ready last thing to do from command line is to check the status of your work from CI system. Simple
git ci-status shows it for you. But there’s more.
If you add
-v for verbosity you can see more details of your build like a link and which service was running it.
$ git ci-status -v ✔︎ danger/danger https://github.com/project/repo-name/pull/432#issuecomment-516876489 ✖︎ Travis CI - Pull Request https://github.com/project/repo-name/runs/200701337
Last thing is that you can immediately open browser page of the check for you with command like below:
$ open `git ci-status -f " %U"`
If you use other system than MacOS try other opener command, but you should get the point.
These were just a few features of
hub, the ones I use everyday and why I recommend fellow developers to give it a try. It allows me to do more within the cozy world of commandline console and save on interacting with browser and mouse.