gpt4 book ai didi

git rebase 一个分支,因为它被创建

转载 作者:太空狗 更新时间:2023-10-29 14:00:45 26 4
gpt4 key购买 nike

当 rebase 分支时(例如 feature branch 在 merge 到 master 之前)我必须手动查找分支的创建时间以告诉 git rebase rebase 的起点。

我强烈认为这可以自动化 — 有没有办法告诉 git rebase 在创建分支 时启动?

最佳答案

假设您正在处理基于 master 分支的分支 feature/foo

        F--J--K--|feature/baz|
/
A--B--D--G--|master|
\
C--E--H--|feature/foo|HEAD|

为了将工作rebasemaster 上,有不同的选择:

  1. 作为explained by remram您可以使用 --onto 显式命名目标提交:

    // 1.1. Will move the flag `feature/foo`
    git rebase --onto master B feature/foo
    // 1.2. Will not move the flag `feature/foo`
    git rebase --onto master B H
    // 1.3. If the HEAD is at H
    git rebase --onto master B

    由于 --onto 允许您定义目标提交,如果您想要将 feature/foo rebase 到 feature/baz 上,它很有用它们不共享一个共同的分支基地。

    // 1.4. Will rebase `feature/foo` onto `feature/baz`
    git rebase --onto feature/baz B feature/foo

    /--|feature/baz|
    /
    F--J--K--C'--E'--H'--|feature/foo|HEAD|
    /
    A--B--D--G--|master|
  2. 作为explained by Stefan Fleiter如果 feature/foo 是基于 master 的,则不必命名祖先:

    // 2.1. Explicitly naming feature/foo as the branch to be rebased onto master
    git rebase master feature/foo
    // 2.2. Assuming that feature/foo is currently checked out aka. HEAD
    git checkout feature/foo
    git rebase master
  3. 如果你对 rebase 过程感到不舒服,因为你以前的分支 feature/foo “消失了” cherry-pick对你来说可能是一个感觉良好的选择。该命令允许指定一系列提交,其行为与 rebase --onto 非常相似。不同之处在于,您从中挑选的分支将保持不变。

    // 3.1.1. Start by creating a new branch where master is
    git checkout master
    git checkout -b feature/foo-cherried

    F--J--K--|feature/baz|
    /
    A--B--D--G
    \ \
    \ \-|master|feature/foo-cherried|HEAD|
    \
    C--E--H--|feature/foo|


    // 3.1.2. Pick a range starting at the common branch base
    git cherry-pick B..H

    F--J--K--|feature/baz|
    /
    A--B--D--G--C'--E'--H'--|feature/foo-cherried|HEAD|
    \ \
    \ \-|master|
    \
    C--E--H--|feature/foo|


    // 3.1.3. Later on if everything worked fine you can
    // delete the unmerged branch feature/foo
    git branch -D feature/foo

    F--J--K--|feature/baz|
    /
    A--B--D--G--C'--E'--H'--|feature/foo-cherried|HEAD|
    \
    \-|master|

有关 git rebase --onto 的更多信息,我在这里推荐一篇博文:

关于git rebase 一个分支,因为它被创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18685420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com