gpt4 book ai didi

git - 在其基础分支基于主分支后如何重新定位分支

转载 作者:行者123 更新时间:2023-12-04 12:58:03 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to git rebase a branch with the onto command?

(8 个回答)


去年关闭。




我有一个分店 A其中我做了一些更改 a ,然后我创建了一个新分支 B来自 A继续做一些改变b ,使总变化Ba, b .最后,其他人 merge 了他们的更改 c进入 master,所以工作树现在看起来像这样:

- c (master)
\
- a (A) - b (B)
然后我重新定位 A掌握,更改来自 a 的更改至 a'并强行将它们推到分支 A ,所以工作树看起来像这样:
- c (master) - a' (A)
\
- a - b (B)
问题
我怎样才能 rebase BA ,这样只有新的变化 b被改变,工作树看起来像这样:
- c (master) - a' (A) - b' (B)
如果我尝试 git rebase origin/A当我在 B ,然后它尝试解决提交 a反对 c, a' ,我不想要,因为我担心它会创建一个新的提交 a''然后工作树将如下所示:
- c (master) - a' (A) - a'' - b' (B)
有没有办法只重新设置更改 b现在? (我有 OFC 试图用谷歌搜索这个,但我没有找到任何专门涵盖这个案例的东西)
编辑:
我试着压扁 a'bB ,但那更糟,因为现在所有的变化都来自 b被登记为冲突。为了说明,让我们说我:
  • 添加了一个新行 l1a .
  • 将该行更改为 l2b .
  • 这一行在另一个提交中没有改变 c .
  • 现在是冲突了,因为l1已添加于 a' ,但是 l2被添加到撤销提交 a'&b .
  • 最佳答案

    git rebase --onto A a B
    --onto A用途 A作为新基地。 a B获取一组提交,如 git log a..B ,在您的情况下仅包括 b .这组提交被应用到新的基础上。
    您可以随时使用 interactive rebase处理简单或复杂的案件。
    git rebase -i A
    在编辑页面,修改前导 pickdrop在行 a ,或者干脆删除整行。保存并退出。
    git rebase不行,你也可以试试 git cherry-pick仅应用您想要的提交,然后重置 B到新的头。
    git checkout -b tmp A
    git cherry-pick b
    git checkout B
    git branch B_bak
    git reset tmp --hard
    git branch -D tmp
    如果出现任何问题,您可以运行 git checkout B && git reset B_bak --hard恢复 B .

    关于git - 在其基础分支基于主分支后如何重新定位分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63736743/

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