【问题标题】:How to change from one feature branch to another?如何从一个功能分支更改为另一个?
【发布时间】:2022-01-10 04:30:41
【问题描述】:

我正在处理从featA 切出的分支A。所以我让AfeatA 保持同步。但是新创建了另一个分支featB,并且提交与featA 略有不同。现在我想让我的分支A 更新featB 而没有featA 更改。考虑到我可能会遇到合并冲突,我该如何解决这个问题?任何建议都会非常有帮助。

【问题讨论】:

  • 最好绘制一个示例提交图,以显示您希望包含的内容和不包含的内容。

标签: git version-control gitlab


【解决方案1】:

试试这个

git checkout A
git fetch origin
git rebase origin/featB

【讨论】:

  • 我的 gitbash 进入 rebase 模式并要求选择每个提交。
  • 有合并冲突吗??
  • 是的,有 1 个合并冲突,我已经解决了,我添加了一个提交
  • 它现在按预期工作??
  • 现在也是同样的问题,合并冲突解决后,它要求我手动选择每个提交
【解决方案2】:

这在很大程度上取决于您的提交图以及您想要包含或不包含的内容

假设你有

a <- b <- c <- d <- e   <<- featA
     ^         ^
      \         \- f    <<- A
       \- g             <<- featB

如果是你想要的:

a <- b <- c <- d <- e   <<- featA
     ^
      \
       \- g             <<- featB
          ^
           \- f'        <<- A

你可以简单地做一个

git rebase  --onto featB featA A

如果你想让A 包含a,b,c,d,f,g,你应该这样做

git checkout A  # make sure you are at A
git merge featB

这会给你

a <- b <- c <- d <- e         <<- featA
     ^         ^
      \         \- f <- h     <<- A
       \               /        
        \-g <---------/       <<- featB

【讨论】:

    【解决方案3】:

    另一种方法,

    git checkout A
    git pull origin featA # pull update from `featA`
    git pull origin featB # pull update from `featB`
    

    现在分支A 拥有featAfeatB 的所有提交

    【讨论】:

    • 这不是我需要的。我不想要 featA 改变,只想要 featB 改变
    • 那么你只能通过 git pull origin featB 从 featB 中拉取
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 2017-07-04
    • 2020-12-15
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多