post-commit git钩子中获取Drools仓库被提交分支以推送至对应远程分支
问题排查与解决方案
第一步:确认分支状态
先执行 git branch --list 查看输出中带 * 标记的分支:
- 如果
*标记的确实是master:说明你未成功切换到目标分支,先执行git checkout <目标分支名>完成分支切换后再操作即可。 - 如果
*标记的是其他分支,但获取命令依然返回master:属于命令参数或环境配置问题,参考后续方案修复。
第二步:修正分支获取命令
你当前使用的命令强制指定了 --git-dir=. 与 --work-tree=.,要求必须在仓库根目录(.git文件夹所在目录)执行才能正常读取仓库状态,如果你在仓库子目录下执行就会出现返回结果异常。直接使用简化命令即可:
BRANCH=$(git branch --show-current)
如果执行该命令返回空值,说明你当前处于分离头指针状态,没有关联的本地分支,先执行 git checkout -b <新分支名> 将当前提交绑定到新分支即可。
如果分支切换正常、命令简化后依然返回错误结果,执行 alias git 检查是否配置了强制指向master的git别名,导致命令返回异常。
批量推送所有分支的替代方案
如果你需要一次性将本地所有分支的变更都推送到远程同名分支,不需要逐个分支切换获取分支名,直接执行:
git push origin --all
该命令会自动匹配本地与远程的同名分支,推送所有本地分支的最新提交。
内容的提问来源于stack exchange,提问作者josesuero
相关产品推荐
相关产品推荐

