I just stumbled on a cool command-line utility put out by GitHub called "Hub". It attempts to mimic the git
command while adding lots of useful functionality for GitHub Users.
To give you a taste, I'll demonstrate a common GitHub task with plain old git
, and then with the new hub
command.
Cloning a repository
Hub provides simple cloning functionality that saves you a trip to the browser to grab a repository's url. Now, you can just reference the name of the repository you wish to pull down.
# Before
git clone https://github.com/laravel/framework.git
# After
hub clone laravel/framework
Have I piqued your interest? Let's dive in.
Installation
I'm assuming you are on a Mac using homebrew, if not, go here for more details.
brew install hub
Setting up an alias
If you'd like, you can keep the git
command and hub
command separate. However, I did come across this line in the docs:
hub can be safely aliased as git so you can type $ git
in the shell and get all the usual hub features.
I think this is pretty cool, so I opted to go this route. Add the following command to your .bashrc
, .zshrc
, or .bash_profile
file:
alias git=hub
After restarting your shell, or running source ~/.bashrc
, your git
command is now supercharged with all of the features from hub
.
Note: you can also run
hub alias
for instructions on aliasing.
Use Cases
Let's go through my favorite use cases for using hub
. If you're curious, you can head to the documentation to discover more things I haven't covered.
Initializing a GitHub repository
It's common for me to start work on a project locally, then eventually create a GitHub repository for it. Hub makes this process a little easier.
git create
Now, a repository named after the current folder will have been created on my GitHub account, and my local git repo will be linked to it.
Forking a repository
If you pulled down a public repository and want to contribute to it by making pull-requests off your own fork. Hub makes that process simple:
git fork
The above command will fork the repo on your GitHub account and add the remote reference for you.
Opening a pull-request
From within a separate branch (that has been pushed to GitHub), run:
git pull-request
A Vim window will open where you can type the title and description. Upon closing the Vim window, the pull-request will be created and its URL will be provided to you.
Checking out a contributor's PR locally
If a developer makes a pull-request to a GitHub repo that you maintain, you may want to checkout their branch locally. Here's how you would accomplish that using Hub.
git pr checkout <The PR number>
If you don't know the number, you can view a list of open PRs directly from the command line using:
git pr list
This is something I usually copy and paste from GitHub, but now, with the much simpler Hub API, I can pull PRs down easily.
Publishing a release
This one is my personal favorite: the ability to create and tag a release on GitHub directly from the command line. Simply pass the release name to the git release create
command.
git release v1.3.1
After running that command a Vim window will open, prompting you to add a title and description if you wish.
Wrapping Up
To me, Git and GitHub go hand in hand. Having a tool that unifies operations from both is a big time saver.
Enjoy the time savings!
- Caleb