以编程方式检查git是否有新版本,然后拉

时间:2019-03-26 12:19:24

标签: git github server pull

我有一个运行nginx的digitalocean液滴来提供我的html文件,并使用rest-api将url重定向到后端。

当我想更新服务器上的前端或后端时,我需要进行以下繁琐的过程,将其切入其中,拉出后端或前端,如果前端然后构建并重新启动服务。我正在寻找一种以某种方式自动执行某些步骤或全部步骤的方法。有什么技术可以帮助您吗?

1 个答案:

答案 0 :(得分:1)

您可以编写cron脚本,在其中可以检查源分支HEAD与本地分支HEAD是否不同:

# check remote head
git ls-remote origin refs/heads/your_branch

#check local head
git rev-parse HEAD

# if remote HEAD is different than local HEAD, then pull

此解决方案仅适用于一个分支(例如your_branchmaster)。如果您愿意,我可以为您编写完整的脚本,该脚本将检查所有本地分支是否与远程分支同步。 我想要python中的脚本,但是bash也是一种选择。

顺便说一句

在我看来,自动拉动不是一个好的解决方案。如果您有未提交的更改怎么办?藏起来,拉后套用吗? 如果您有未发布的提交怎么办?您应该只进行纯拉动还是使用变基拉动? 通过获取,您不会遇到此类问题:) 我认为,自动提取是更好的选择,如果您只想将更改与git工作目录合并。 如果您考虑取回拉(pullfetchmerge),则在本地应检查FETCH_HEAD,但请考虑到FETCH_HEAD是临时的。

另一个问题是,如果您的存储库包含子模块。