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 身份验证)。
这是我所做的:
- 设置 public/private 密钥对并将它们分别添加到 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 特定。
就这样:
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'
提交新文件或删除更好...
也许你应该直接打电话给 git
。
因为 git
不从 standard input
读取,echo
的输出对通过管道 |
的 git
没有任何意义。
Philippe 在我编辑此答案时发布了解决方案:)
Philippe 的上述回答有效。但是,如果它在 运行 某处执行提交后检查错误级别(如在 Jenkins 中),则它不起作用。一个小的修改解决了:
git add -A
git diff-index --quiet HEAD || git commit -m "scheduled commit"
的原始答案中有进一步解释
我需要在 Windows Server 2008 R2 中安排一个任务来自动将文件从文件夹推送到 Github Enterprise(我认为 "Enterprise" 部分不会成功不同于常规 Github,只是需要 ssh 身份验证)。
这是我所做的:
- 设置 public/private 密钥对并将它们分别添加到 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 特定。
就这样:
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'
提交新文件或删除更好...
也许你应该直接打电话给 git
。
因为 git
不从 standard input
读取,echo
的输出对通过管道 |
的 git
没有任何意义。
Philippe 在我编辑此答案时发布了解决方案:)
Philippe 的上述回答有效。但是,如果它在 运行 某处执行提交后检查错误级别(如在 Jenkins 中),则它不起作用。一个小的修改解决了:
git add -A
git diff-index --quiet HEAD || git commit -m "scheduled commit"
的原始答案中有进一步解释