我经常做同样的任务,即将更改提交到远程分支。有时懒惰,我需要放置一组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
)
答案 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似乎不是我们环境的解决方案。