Automate repetitive tasks with custom git commands

How to write custom git commands

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:

  1. Create a file with a name in the given format git-mycommand. And this file should be given executable access.

  2. The created file should be included in $PATH. This can be done in bashrc or in zshrc

  3. 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