提问人:Hack-R 提问时间:12/14/2016 更新时间:12/19/2018 访问量:6801
Windows .bat 文件,用于安排 git 添加、提交和推送到 Github
Windows .bat file to schedule git add, commit and push to Github
问:
我需要在 Windows Server 2008 R2 中安排一个任务,以自动将文件从文件夹推送到 Github Enterprise(我认为“Enterprise”部分不会使其与常规 Github 不同,除了需要 ssh 身份验证)。
这是我所做的:
- 设置公钥/私钥对,并将它们分别添加到 Github 和 .ssh 中
- 创建了一个 Github 存储库并将其克隆到本地文件夹
- 手动运行了 、 和 步骤,以确保它以这种方式工作
add
commit
push
- 尝试编写一个.bat文件以自动执行步骤#3
- 将任务安排为在目标文件夹中以我的用户身份以最高权限运行
不幸的是,任务失败,因为我没有正确编写 .bat 文件。
这是我对 .bat 文件的尝试:
echo git add . | "C:\Program Files\Git\bin\git.exe"
echo git commit -m 'scheduled commit' | "C:\Program Files\Git\bin\git.exe"
echo git push | "C:\Program Files\Git\bin\git.exe"
我找到了一个很好的资源来说明如何做到这一点,但不幸的是,它非常特定于 Linux。
答:
10赞
Philippe
12/14/2016
#1
只需做:
git add .
git commit -m 'scheduled commit'
git push
或者,如果 git 不在你的路径中:
"C:\Program Files\Git\bin\git.exe" add .
"C:\Program Files\Git\bin\git.exe" commit -m 'scheduled commit'
"C:\Program Files\Git\bin\git.exe" push
根据您想要实现的目标,
git commit -a -m 'scheduled commit'
仅提交已更改的跟踪文件,或:
git add -A
git commit -m 'scheduled commit'
提交新文件或删除更好...
评论
0赞
Hack-R
12/14/2016
这有点奇怪。当我这样做时,它说它成功完成,但是当我在 Github 上查看时,我实际上没有看到更新。
0赞
Sagar Nayak
2/22/2019
那么如何在这里放几个条件。比如,假设你的推送失败了。你想再试一次。
0赞
ryan
12/14/2016
#2
也许你应该直接打电话。
因为不从中读取,所以输出对通过管道没有任何意义。git
git
standard input
echo
git
|
菲利普在我编辑这个答案时发布了该解决方案:)
1赞
Mats Bengtsson
12/18/2018
#3
菲利普的上述回答是有效的。但是,如果它在执行提交后检查错误级别的某个地方运行(例如在 Jenkins 中),则它不起作用。一个小的修改就可以解决以下问题:
git add -A
git diff-index --quiet HEAD || git commit -m "scheduled commit"
这在 https://devops.stackexchange.com/a/5443 的原始答案中有进一步的解释
评论