Windows .bat文件用于安排git add,commit和push to Github

时间:2016-12-13 18:10:48

标签: git batch-file github windows-server-2008-r2

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

这就是我所做的:

  1. 设置公钥/私钥对,并将它们分别添加到Github和.ssh
  2. 创建了一个Github仓库并将其克隆到本地文件夹
  3. 手动浏览addcommitpush步骤以确保其正常运行
  4. 尝试编写.bat文件以自动执行第3步
  5. 将任务计划为以具有最高权限的用户身份在目标文件夹
  6. 中运行

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

3 个答案:

答案 0 :(得分:5)

只是做:

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'

提交新文件或删除更好......

答案 1 :(得分:1)

以上来自Philippe作品的答案。但是,如果它在执行落实后检查错误级别的某个地方运行(例如,在Jenkins中),则无法使用。进行较小的修改即可解决:

git add -A
git diff-index --quiet HEAD || git commit -m "scheduled commit"

有关https://devops.stackexchange.com/a/5443的原始答案对此进行了进一步解释

答案 2 :(得分:0)

也许您应该直接致电git。 由于git无法从standard input读取,echo的输出对git通过管道|没有任何意义。

菲利普已经发布了解决方案,我正在编辑这个答案:)