git - Git:拉新提交时遵循合并
问题描述
假设我们有这些分支:
- 掌握
- 开发
- 新功能
我的本地仓库正在关注“new_feature”。
其他人已将“new_feature”合并到“develop”,并删除了服务器上的那个分支(即“new_feature”分支)。正如预期的那样,功能完成后。
我想要一种自动化/脚本化的方式来检测分支是否已合并,到哪个目标分支,并在本地签出该分支(并删除本地“new_feature”分支)。
PS:在这个简化的场景中,可以丢弃分支上的本地更改。
任何人?
解决方案
我找到了部分解决方案。
检测拉动是否有效:
如果 !git pull --all --prune; 然后
该分支已被远程删除,因此不再存在引用。但是我们知道该(本地)分支的最新本地和已知提交是什么。让我们看看这个提交在哪里被合并(感谢@joanis):
ORIGIN=$(git branch --remotes --merged "HEAD" | grep -v HEAD)
提交可以出现两次,我们去掉“-> HEAD”行。我们需要找出名称是什么:
BRANCH="${ORIGIN/origin/}"
BRANCH="${BRANCH// /}"
所以让我们去新的分支:
git checkout "$BRANCH" git pull
这种情况的限制是如果有多个分支已合并。该算法将按照“git 分支”列出的顺序选择其中一个。
推荐阅读
- java - 安装 Avast Anti Virus 后,javax.mail 中的邮件同步失败
- php - laravel 无法将记录保存到数据库
- angular - is it possible to exclude files from angular library?
- cuda - 如何在 xavier agx 上更新到 cuda 10.2?
- python - 如何在python中仅使用日期时间的时间部分?
- powerbi - Change value of a single cell in Power BI
- html - 将随机数放入 iframe src URL
- arrays - 如何删除每个元素的第一个元素
- javascript - 使用元响应元标记后代码没有响应?
- reporting-services - SSRS中的POS收据/连续纸打印