Custom Git Commands in 3 Steps
I’m lazy and so I seek ways to reduce repetitious activities. For instance, I’ve spent a lot of time in a terminal typing Git commands. A few of the more common commands, I’ve aliased. If I want to see a list of branches, I used to type:
Listing Git branches
$> git branch -v -a
But after adding an alias to my bash profile, I simply type gb
. I’ve done this for a few commands like git commit
, which is gc
and gca
for the -a
flag.
Occasionally, aliases aren’t enough and when it comes to Git, you can create custom commands that can be referenced like so:
Your custom Git command
$> git my-command
To create a custom command, you first need to create a file named git-my-command
; second, you must place the resultant file on your path. Finally, you need to make the file executable. You can write this file in Bash, Ruby, or Python – it doesn’t matter.
For example, I tend to find myself stashing some uncommitted changes and then later popping those stashed changes onto a new branch. I end up executing the following steps:
A simple Git flow
$> git stash $> git stash branch some_branch
The key step I want to simplify is the last one – I’m lazy and I’d rather not type 4 words. I’d rather type git unstash some_branch
because it saves me one word.
Following the three simple steps I mentioned above, I’ll first create a file in my ~/bin
directory called git-unstash
. The ~/bin
directory is in my path because my .bashrc
has this line: PATH=$PATH:$HOME/bin
.
My git-unstash
script will be simple – it takes an argument (the branch name, i.e. $1
); therefore, the script does a simple check to ensure the branch name is provided.
Custom Git command: unstash
#!/bin/bash ((!$#)) && echo No branch name, command ignored! && exit 1 git stash branch $1
After I’m done writing it, I’ll do a quick chomd +x
and all three steps are accomplished.
Now my new flow is this:
A simple Git flow
$> git stash $> git unstash some_branch
Custom Git commands are that simple to invent – first, create a file named git-my-command
. Next, place it on your path; and, finally, make it executable. Be lazy and carry on, baby!
Reference: | Custom Git Commands in 3 Steps from our JCG partner Andrew Glover at the The Disco Blog blog. |
Hello Andrew, thanks for your article :-). Another way for aliases is built in in git itself: After executing: git config –global –add alias.gb “branch -v -a” you may use: git gb The best thing is that with bash-completion “git ” will show you aliases defined in this way as well, these are my aliases: git config -l | grep ^alias alias.st=status alias.co=checkout alias.ci=commit alias.br=branch alias.log1=log –pretty=format:”%h %ai %an %s” alias.ls=ls-files –stage alias.logst=log –stat alias.pullfo=pull –ff-only alias.last=log -1 HEAD alias.fetchap=fetch –all –prune alias.gb=branch -v -a Coming from svn st, ci and co were very useful. As I like rebasing local… Read more »
Editor add my tab in lt and gt :-):
… The best thing is that with bash-completion “git TAB” will show you aliases defined in this way as well, …