有没有办法编写一个将分支合并回其父级的别名?我知道我能做到:
git checkout - && git merge -
但它仅适用于我之前的分支是父分支的简单情况。 据我所知,git没有跟踪这种信息,因为那里没有分支。但我希望它已经实现为插件或挂钩 提前谢谢。
答案 0 :(得分:1)
这样的别名将涉及首先找到"父母"分支。
这不是一件轻而易举的问题" Find the parent branch of a branch"有一些很好的解决方案。
Git的历史记录基于DAG提交。分支(以及一般的“refs”)只是瞬态标签,指向不断增长的提交DAG中的特定提交。
因此,分支之间的关系可能会随着时间的推移而变化,但提交之间的关系不会。
获得父分支的名称后,就可以在别名中使用它。
答案 1 :(得分:1)
正如VonC首先说的,我需要做的是找到当前分支的父级。以下脚本主要执行我需要的操作:
git branch | grep -v '*'|xargs -I{} sh -c ' printf "{}:"; git log --oneline `git merge-base "$(git rev-parse --abbrev-ref HEAD)" "{}"` | wc -l' | sort -t: -k +2n | tail -n 1 | sed 's/:.*//'
它的作用:
之后只需要结帐并将之前的头合并到其中:
git checkout $parent_branch && git merge -
PS:我没有在大型存储库上测试它,如果存在当前分支的一个分支,它可能会令人惊讶。它需要修复。