git - 以编程方式检查 git 是否有新版本,如果然后拉
问题描述
我有一个运行 nginx 的 digitalocean droplet 来提供我的 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_branch
is master
)。如果您愿意,我可以为您编写完整的脚本,该脚本将检查您的所有本地分支是否与远程分支同步。我想要 python 中的脚本,但 bash 也是一种选择。
顺便提一句
在我看来,自动拉动不是一个好的解决方案。如果您有未提交的更改怎么办?把它们藏起来,然后拉申请?如果您有未发布的提交怎么办?你应该只做纯粹的拉动还是用变基拉动?使用 fetching 你就不会遇到这种问题 :) 在我看来,自动 fetching 是更好的选择,如果你只想将更改与你的 git 工作目录合并。如果您考虑取而代之的是 pull ( pull
is fetch
and merge
),那么您应该在本地检查FETCH_HEAD
,但请考虑到它FETCH_HEAD
是 temp。
另一个问题是,如果您的存储库有子模块。
推荐阅读
- javascript - 为图像添加旋转效果
- regex - 在正则表达式的反向引用中执行第二次替换
- java - lambda 表达式中的返回类型,Reduce 函数
- android - Xamarin 表单 Java.Lang.NoSuchMethodError
- r - 如何在 R markdown 中引用图形
- mpi - 没有发生明显的死锁情况
- c++ - 将工作线程与主线程同步
- java - 线程堆栈未完全执行并切换到我的
- java - 使用 Chaquopy 在 android studio 中导入(从 nltk.corpus 导入 wordnet)时出错
- airflow - 带有 Yarn Cluster 模式的 Airflow SparkSubmitOperator 无法跟踪应用程序状态