有没有办法编写将分支合并回其父级的别名?我知道我可以做到:
git checkout - && git merge -
但它只适用于我以前的分支是父分支的简单情况。据我所知,git 不会跟踪此类信息,因为那里没有分支。但我希望它已经实现为插件或钩子集。
提前致谢。
这样的别名将涉及首先找到“父”分支。
这不是微不足道的,“找到一个分支的父分支”这个问题有一些很好的解决方案。
Git 的历史基于提交的DAG。分支(和一般的“引用”)只是指向不断增长的提交 DAG 中特定提交的临时标签。
因此,分支之间的关系会随着时间而变化,但提交之间的关系不会。
一旦有了父分支的名称,就可以在别名中使用它。
正如 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:我没有在大型存储库上对其进行测试,如果存在当前分支的分支,它的行为可能会令人惊讶。它需要修复。