解决git-rebase合并冲突后,将创建另一个分支.如何解决这种情况



我创建了一个文件.txt.

  • 我在master分支上然后我添加了文本"m1";并用消息";m1">
  • 然后附加";m2";到同一文件并用消息"提交;m2">
  • 然后我创建并签出了一个新的分支";特征">
  • 在那里我附加了文本";f1〃;并用消息"提交;f1〃
  • 然后我结账到master并添加文本";m3">

所以在master分支中,.txt文件现在有文本";m1 m2 m3";

在功能分支中,.txt文件具有文本";m1 m2 f1";

  • 然后我再次签出功能分支
  • 现在,由于我在功能分支中,我键入了git rebase master,并且像往常一样得到了合并冲突
  • 然后我解决了文件中的冲突,并运行了git add a.txtgit 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 addgit rebase --continue。这是一个非常漫长的过程。有人能解释我为什么要解决两次冲突吗?

我的目标是从功能分支重新建立master的基础。最后,从主分支重新设置特征分支的基础。

我遵循了您提到的整个步骤序列,没有创建任何中间分支,rebase在功能分支和master上都按预期工作。下面提到了几件事,你也许可以仔细检查,以确保干净的重新底座。

  1. 一旦发生冲突,执行git reset .(根据git的建议(,然后开始编辑a.txt。最后执行git add .git add a.txt

  2. 在解决冲突时,请确保删除所有数字冲突标记字符(<<< === >>>),如下所示:

之前

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

之后

m1 m2 m3 f1

当我按照你所说的去做时,你所描述的不会发生。

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
)
}

并且continue产生了成功的rebase。

最新更新