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

时间:2021-06-18 17:25:39

标签: git rebase

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

  • 我在主分支上然后我添加了文本“m1”并使用消息“m1”进行了提交。
  • 然后将“m2”附加到同一个文件并提交消息“m2”。
  • 然后我创建并签出了一个新的分支“功能”。
  • 在那里我附加了文本“f1”并提交了消息“f1”。
  • 然后我结帐到 master 并添加了文本“m3”。
<块引用>

所以现在在 master 分支中,a.txt 文件的文本为“m1 m2 m3”

<块引用>

在功能分支中,a.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。最后从 master 分支 rebase 功能分支。

2 个答案:

答案 0 :(得分:1)

我遵循了您提到的整个步骤序列,没有创建任何中间分支,并且 rebase 在功能分支和 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

答案 1 :(得分: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
)
}

并且 continue 产生了成功的变基。

相关问题