【问题标题】:How do I ask git to merge branch back to parent我如何要求 git 将分支合并回父级
【发布时间】:2014-06-25 09:06:11
【问题描述】:

有没有办法编写将分支合并回其父级的别名?我知道我能做到:

git checkout - && git merge -

但它只适用于我之前的分支是父分支的简单情况。 据我所知,git 不会跟踪此类信息,因为那里没有分支。但我希望它已经实现为插件或钩子集。
提前致谢。

【问题讨论】:

    标签: githooks git-alias


    【解决方案1】:

    这样的别名需要首先找到“父”分支。

    这不是小事,“Find the parent branch of a branch”这个问题有一些很好的解决方案。

    Git 的历史记录基于 DAG 的提交。分支(以及一般的“引用”)只是指向不断增长的提交 DAG 中特定提交的临时标签。
    因此,分支之间的关系可能会随着时间而变化,但提交之间的关系不会

    一旦有了父分支的名称,就可以在别名中使用它。

    【讨论】:

      【解决方案2】:

      正如 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:我没有在大型存储库上测试它,如果存在当前分支的分支,它的行为可能会令人惊讶。它需要修复。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-06
        • 2021-11-03
        • 1970-01-01
        • 2015-10-30
        • 2023-03-06
        • 2020-02-17
        • 1970-01-01
        相关资源
        最近更新 更多