解决 git rebase 合并冲突后,会创建另一个分支。这种情况如何解决?

问题描述 投票:0回答:2

我创建了一个文件a.txt。

  • 我在 master 分支上然后我添加了文本“m1”并使用消息“m1”进行了提交。
  • 然后将“m2”附加到同一文件并使用消息“m2”提交。
  • 然后我创建并签出了一个新的分支“feature”。
  • 我附加了文本“f1”并提交了消息“f1”。
  • 然后我检查 master 并添加文本“m3”。

因此,在 master 分支中,现在 a.txt 文件具有文本“m1 m2 m3”

在功能分支中,a.txt 文件具有文本“m1 m2 f1”

  • 然后我再次签出功能分支
  • 现在当我在功能分支中时,我输入
    git rebase master
    并且像往常一样遇到合并冲突。
  • 然后我解决了文件中的冲突并运行
    git add a.txt
    git rebase --continue
    它立即显示我输入一条新的提交消息,然后我输入了一条提交消息。
  • 现在我输入
    git branch
    并发现如下
* (no branch, rebasing feature)
feature
master

然后我又跑了

git rebase --continue
它向我展示了

a.txt: needs merge
You must edit all merge conflicts and then
mark them as resolved using git add

编辑:我又发现了一些更多的冲突。我必须解决这些问题,然后运行

git add
git rebase --continue
。这是一个非常漫长的过程。谁能解释一下为什么我必须两次解决冲突?

我的目标是从功能分支重新建立 master 基础。最后从主分支重新调整功能分支。

git rebase
2个回答
0
投票

当我按照你说的去做时,你所描述的事情并没有发生。

testit () {
( set -x;
git init `mktemp -d`; cd $_
echo m1 >file.txt; git add .; git commit -mm1
echo m2 >>file.txt; git commit -amm2
git checkout -b feature
echo f1 >>file.txt; git commit -amf1
git checkout master
echo m3 >>file.txt; git commit -amm3
git rebase master feature
vi file.txt
git add .
git rebase --continue
)
}

并且继续会产生成功的变基。


0
投票

我按照上述步骤顺序进行操作,没有创建任何中间分支,并且变基在

feature
分支以及
master
上按预期工作。

下面提到的一些建议可以帮助确保干净的变基:

  1. 一旦发生冲突,请在开始编辑

    git reset .
    之前执行
    a.txt
    (按照git的建议)。最后执行
    git add .
    git add a.txt

  2. 解决冲突时,请确保删除所有git冲突标记字符

    (<<< === >>>)
    ,如下所示:

之前

<<<<<<< HEAD
m1 m2 m3
=======
m1 m2 f1
>>>>>>> f1

之后

m1 m2 m3 f1
© www.soinside.com 2019 - 2024. All rights reserved.