首页 > 解决方案 > 以编程方式检查 git 是否有新版本,如果然后拉

问题描述

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

当我想更新服务器上的前端或后端时,我有这个繁琐的 ssh 过程,拉后端或前端,如果前端则构建并重新启动服务。我正在寻找一种以某种方式自动化某些步骤或全部步骤的方法。有什么技术可以提供帮助吗?

标签: gitgithubserverpull

解决方案


您可以编写 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_branchis master)。如果您愿意,我可以为您编写完整的脚本,该脚本将检查您的所有本地分支是否与远程分支同步。我想要 python 中的脚本,但 bash 也是一种选择。

顺便提一句

在我看来,自动拉动不是一个好的解决方案。如果您有未提交的更改怎么办?把它们藏起来,然后拉申请?如果您有未发布的提交怎么办?你应该只做纯粹的拉动还是用变基拉动?使用 fetching 你就不会遇到这种问题 :) 在我看来,自动 fetching 是更好的选择,如果你只想将更改与你的 git 工作目录合并。如果您考虑取而代之的是 pull ( pullis fetchand merge),那么您应该在本地检查FETCH_HEAD,但请考虑到它FETCH_HEAD是 temp。

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


推荐阅读