git - 使用 git merge / git merge-base,可靠地确定分支是否是功能分支
问题描述
假设我们遵循 gitflow 分支模型,其中功能分支是从集成分支创建的。
检查某个分支是否是从集成分支创建的一种相当可靠的方法是什么?
而不是从master分支或其他什么?
我不知道该怎么做。
解决方案
假设您知道所有集成和发布分支的名称,您可以找到所有合并库并按时间戳比较(或排序)它们。
例如,如果主分支被命名为master
and develop
,您可以在特征分支和每个主分支之间找到合并基:
branch_name="feature/feature-1"
is_feature_branch=false
git checkout $branch_name
mb_develop=$( git merge-base HEAD develop )
mb_master=$( git merge-base HEAD master)
ts_develop=$( git show -s --format=%ct $mb_develop)
ts_master=$( git show -s --format=%ct $mb_master)
if (( $ts_develop > $ts_master ))
then
is_feature_branch=true
fi
诚然,如果有更多的主分支(例如,develop、master、release/1.0、release/1.1 等)或者您不知道存储库中每个主分支的名称,这种方法可能会出现问题。
推荐阅读
- java - 在 Maven 项目中使用本地存储的 .jar 文件作为依赖项:编译类文件
- python - Python 根据阈值使用 PhotoScan 过滤点云 - 需要基本的 Python 帮助
- abap - 如何用一条 ABAP SQL 语句连接以下 3 个表
- java - 在 JPA 实体中添加 auto_increment
- php - 检查php中的对象属性是否未定义的最佳方法是什么?
- botframework - 使用 azure cli 更新 azure web app bot 应用程序设置时出错
- python - 如何获取具有两个类名的表中元素的数量?
- javascript - 根据条件动态地将脚本添加到我的应用程序
- c++ - svg 图标在高 DPI 上出现像素化
- javascript - 画布图像与画布或原始图像大小不同