git在Windows上提交并通过批处理文件推送

时间:2013-12-05 10:42:16

标签: windows git batch-file

我经常做同样的任务,即将更改提交到远程分支。有时懒惰,我需要放置一组git命令来自动执行这些步骤:

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

我也尝试过:

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

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

最终push命令的所有内容都有效。输出结果如下:

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

正如您所看到的,对于push,我得到了:

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.

当我通过git shell本身运行上面的命令时,一切正常。我还在Windows Path env变量中添加了git。

有没有人知道它为什么适用于git shell而不是批处理命令? (即使其他命令有效但不是push

3 个答案:

答案 0 :(得分:26)

对我来说,默认情况下,Windows使用Git Bash正确执行.sh个文件。所以我会把你的脚本编写为常规的bash shell脚本:

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

答案 1 :(得分:0)

试试这个!!

cd c://TESTS/path
set HOME=%USERPROFILE%
GIT COMMAND GOES HERE
pause

答案 2 :(得分:0)

我有类似的需求,就是能够将代码从BBCloud移到我们的开发测试服务器,以进行第一阶段的测试。

为此,我创建了Windows计划任务:

在“操作”下,我在“程序/脚本”字段中添加了"C:\Program Files\Git\bin\bash.exe"(带引号)。

在“添加参数”字段中,输入c:\path\to\bash script\pull.sh

然后我完成了任务计划程序向导(运行频率,时间等)。

然后,我在Windows的Git Bash中使用Nano创建了一个bash脚本,其中包含:

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

我希望自动将存储库推送到测试服务器,但是Pipes,Webhooks和DeployHQ似乎不是我们环境的解决方案。