DEV Community

Simc Dev
Simc Dev

Posted on • Originally published at

How to Push an empty commit?

Have you ever tried to push a commit to a Git branch without changing any files in order to re-run your integration process? If yes then you are at the right corner.

Create an empty commit

git commit --allow-empty -m โ€œMessageโ€
Enter fullscreen mode Exit fullscreen mode


For continuous integration, we are using AWS CI/CD delivery pipelines which allow us to build, test and deploy applications on a single push to a specific git branch. It helps us to reduce the manual overhead of deploying code to the server and handle all the actions automatically.

But today I faced a problem where I needed to re-run my delivery pipeline of a branch without adding any extra space or changing any files in the repository, so I searched for the solution for a while and It turns out that Git is allowing us to push an empty commit without adding any staged files to the branch, by using one option --allow-empty during git commit.

Enough of the problem, letโ€™s jump on to the solution

Pushing a commit with staged files

git add .

git commit -m "changes on app controller"

git push origin master 

Enter fullscreen mode Exit fullscreen mode

The above commands will add all unstaged files and add commit and push the code to the master branch, after that our delivery pipeline will be started.

Once the pipeline process fails or you need to run the process again, you will have to push something to the branch but as I mentioned earlier, we will not make any changes to the files, and even then, We will be able to commit the branch with this command.

Pushing empty commit

git commit --allow-empty -m "rerunning the delivery pipeline"

git push origin master 
Enter fullscreen mode Exit fullscreen mode

After the above commands, you can see that the commit has been pushed to your branch and the delivery pipeline will be started.

Top comments (1)

nlxdodge profile image

Just a quick question, but the tool doesn't allow manually re-running? That seems a bit odd. Azure DevOps, Jenkins, Github Actions. They all have a retry/re-run mechanism.