git commit and push via batch file on Windows

Viewed 33959

I do same task often of committing and pushing changes to remote branch. Being lazy sometimes, I needed to put set of git commands to automatically perform these steps:

cd D:\wamp\www\projectName
git checkout dev
git add .
git commit -am "made changes"
git push
pause

I also tried:

cd D:\wamp\www\projectName
call git checkout dev
call git add .
call git commit -am "made changes"
call git push
pause

and

cd D:\wamp\www\projectName
git.exe checkout dev
git.exe add .
git.exe commit -am "made changes"
git.exe push
pause

Everything works excpet for the final push command. Here is output:

D:\wamp\www\givingcircle>git checkout dev
Already on 'dev'
Your branch is ahead of 'origin/dev' by 1 commit.

D:\wamp\www\givingcircle>git add .

D:\wamp\www\givingcircle>git commit -am "made changes"
# On branch dev
# Your branch is ahead of 'origin/dev' by 1 commit.
#
nothing to commit, working directory clean

D:\wamp\www\givingcircle>git push
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

D:\wamp\www\givingcircle>pause
Press any key to continue . . .

As you can see, for push, I am getting:

D:\wamp\www\givingcircle>git push
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

When I run above commands via git shell itself, everything works fine. I have also added git to Windows Path env variables.

Does anyone have an idea of why it works on git shell and not on batch command ? (even though other commands work but not push)

3 Answers

For me, by default, Windows executes .sh files correctly using Git Bash. So I would write your script as a regular bash shell script:

#!/bin/sh
cd /d/wamp/www/projectName
git checkout dev
git add .
git commit -am "made changes"
git push
echo Press Enter...
read

I had a similar need, to be able to move code from BBCloud to our development test servers, for stage 1 testing.

To do this, I created a Windows scheduled task:

Under "Actions", I added "C:\Program Files\Git\bin\bash.exe" in Program/script field (the quotes were required).

In the "Add arguments" field, I entered c:\path\to\bash script\pull.sh.

I then completed the Task Scheduler wizard (run frequency, time, etc.).

I then created a bash script, using Nano in Git Bash for Windows containing:

#!/bin/bash
cd /c/path/to/bash script
git pull

I would prefer a push to the repository automatically pushing down to the test server, but Pipes, Webhooks, and DeployHQ don't seem to be a solution for our environment.

Related