Windows .bat 文件,用于安排 git 添加、提交和推送到 Github

Windows .bat file to schedule git add, commit and push to Github

提问人:Hack-R 提问时间:12/14/2016 更新时间:12/19/2018 访问量:6801

问:

我需要在 Windows Server 2008 R2 中安排一个任务,以自动将文件从文件夹推送到 Github Enterprise(我认为“Enterprise”部分不会使其与常规 Github 不同,除了需要 ssh 身份验证)。

这是我所做的:

  1. 设置公钥/私钥对,并将它们分别添加到 Github 和 .ssh 中
  2. 创建了一个 Github 存储库并将其克隆到本地文件夹
  3. 手动运行了 、 和 步骤,以确保它以这种方式工作addcommitpush
  4. 尝试编写一个.bat文件以自动执行步骤#3
  5. 将任务安排为在目标文件夹中以我的用户身份以最高权限运行

不幸的是,任务失败,因为我没有正确编写 .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。

git 批处理文件 github windows-server-2008-r2

评论

0赞 jthill 12/14/2016
请注意,您可能希望对不太公开的事情执行此操作,在您对历史记录进行编辑之前,通常没有理由让其他人看到您的作品。为什么要发布你昨天做的浑浑噩噩的写作和编码错误,今天早上又被发现?
0赞 Hack-R 12/14/2016
@jthill 你是说文件被推送到 Github 吗?它只是一个文件,每天由其他人的 SAS 脚本自动更新。我们使用 Github 公司作为与公司其他人共享每日更新文件的一种方式,同时避免为新用户更新网络文件夹的权限。我们打算使用 Sharepoint 或 Onedrive 而不是 Github(因为它是数据,而不是代码),但存在权限问题。

答:

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

也许你应该直接打电话。 因为不从中读取,所以输出对通过管道没有任何意义。gitgitstandard inputechogit|

菲利普在我编辑这个答案时发布了该解决方案:)

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 的原始答案中有进一步的解释