Git helps us to write our own custom commands. With these commands, you can write your own git tasks. These git commands can be written in any language you prefer like Ruby, JavaScript.
In this tutorial, I will explain how to write your own custom commands and I will give some examples of it. We will be using bash for this tutorial.
Writing custom git commands are simple as these three steps:
Create a file with a name in the given format
git-mycommand.
And this file should be given executable access.The created file should be included in
$PATH.
This can be done inbashrc
or inzshrc
Then you can run the command
git mycommand
in any of the git repo you have.
Writing our first custom command
Let’s write a custom git command to add, commit, and then push the changes to remote with one command. This is just an example to write a custom command so don’t worry about the use-case of the command we are gonna build.
1. Creating a file for our command
It’s good to have a directory to contain all our custom commands. So that it will be organized. Let’s create a directory.
mkdir my-git-custom-commands
Create a file named git-lazypush
in the above created directory. And add the following code. Refer to the code in the gist here.
Last but not least, make that file as executable
chmod +x git-lazypush
2. Add custom commands to $PATH
This is quite important. This will help Git to recognize the custom commands.
We are adding the directory to $PATH. Add the following line to bashrc
or to zshrc
export PATH=$PATH:/your-directory/my-git-custom-commands
You can now source the file or start a new instance of the terminal
source ~/.zshrc
3. Running our custom command
With everything in place, it’s time to run our custom command. Go to any of your local git repo and run the following command
git lazypush “Your commit message“
As you can see, I have created a new file and have executed the custom command.
And it is evident that files are added, committed, and pushed to the remote server.
Git commands are very useful and can be used to automate the usual tasks in your workflow. So try to find tasks you find repetitive and automate it.
Ideas for custom commands
I will add some ideas of custom commands that I can think of.
git-switch-to
The custom command to checkout to a new branch with all the unstaged changes present in the current branch.
You can find the code in the gist here.
git-remote-diff
The custom command to view the difference between the local and the remote of the specified branch.
You can find the code in the gist here.
git-remote-log
The custom command helps you to view the commit logs between the local and remote changes of the given branch.
You can find the code in the gist here.
git-hard-delete
The custom command to delete a branch both locally and remotely.
You can find the code in the gist here.
git-lazypr
The custom command to create a pull request. There are APIs available in Github, Gitlab to create a PR in a repo. You can use that to create a PR from your command line itself.
That’s it for today.
If you have any queries, feedback, or anything you can reply to this email or just leave a comment.
Thank you for reading :)
If you are interested in leveling up your game in Git you can subscribe to this newsletter. I will be covering some tricks, tips and advanced topics of Git
Thanks for great post. It opens my mind in the way to optimize daily git command flow.