Ubuntu自动从Github仓库拉取代码

14

我在服务器上安装了Git,但我希望每当我在本地进行更改并推送更改时,它能够从我的GitHub仓库拉取最新代码。

我已经调查了hooks,但非常混乱,我找不到任何教程。 有人知道如何做吗?


如果拉取的代码失败了,会直接还是间接地发生什么事情呢? - Severin Pappadeux
我不确定你在问什么。比如说,如果从Github拉取时出现错误? - Sosa
  1. 当你拉取某些内容时,合并时出现错误。
  2. 当你拉取某些内容时,没有错误,但是包含你的更改的代码明显有误。你需要运行测试。
- Severin Pappadeux
  1. 如果在合并过程中出现错误,最好保留错误之前的当前版本。
  2. 我可以在本地工作来解决这个问题。基本上我想做的是在本地创建一个网站,然后当我推送这些更改时,我的远程服务器从github拉取这些更改。
- Sosa
当然由你决定。但是一个简单的脚本可能会起作用,称之为gpush,检查答案。 - Severin Pappadeux
3个回答

5

我希望每次提交后我的服务器都能从仓库拉取最新代码

这似乎需要一个Webhook:你的服务器将监听GitHub发出的拉取事件(JSON负载)。

你会发现很多监听器的例子,比如用CoffeeScript编写的{{link3:zenhacks/github-webhook-listener}}。


5

不再自动从Github拉取代码,我按照这篇指南在自己的服务器上建立了一个代码仓库。 如何使用VPS设置Git自动部署

这样做的好处是,每当我完成本地网站的工作后,就会将代码推送到服务器上的代码仓库。每次服务器收到代码更改时,都会检出到我的网站目录。

我还可以同时设置本地计算机将代码推送到Github。非常有用的指南,我推荐给大家。


1

但是简单的脚本可能会起作用,称其为gpush:

#!/bin/bash
git pull
if [$? -ne 0]; then
    ... error processing
fi
git push

  1. 因为它是从仓库中拉取,所以应该是git pull,不是吗?
  2. 我该如何设置它从特定的Github仓库中拉取?
- Sosa
@Sosa 1. 不太理解。首先,它会执行 git pull,然后检查其返回代码和错误处理(你必须编写它,我不知道你想在错误时做什么)。如果错误代码为 0(一切正常),它会执行 git push。2. 你可以将其添加为命令行参数,将第二行改为 git pull $1 - Severin Pappadeux
我认为这很接近我想要的,但并不完全是。我希望我的服务器在每次提交后都能从仓库中拉取。我需要每次想要拉取更改时执行该脚本。 - Sosa
@Sosa 好的,那可能就会出现问题了,你需要使用钩子。不幸的是,我对钩子知之甚少... - Severin Pappadeux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接