以编程方式检查 git 是否有新版本 if then pull

programmatically check git for new versions if then pull

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

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

您可以编写 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 也是一个选项。

顺便说一句

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

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