从一个空文件夹开始,我们首先创建一个带有合并的分支和另一个我们将要变基的分支。
A---B--
\ \
---C---D
\
---E
当 master 指代 B,branch 指代 D,而 goodbye-branch 指代 E 时。
git init
echo Hello > Hello.txt
git add Hello.txt
git commit -m "Create Hello.txt (commit A)"
git tag start
echo World! >> Hello.txt
git commit -am "Change to Hello World (commit B)"
git checkout start
git checkout -b branch
echo Dave >> Hello.txt
git commit -am "Change to Hello Dave (commit C)"
git merge master
echo Hello World, Dave! > Hello.txt
git add Hello.txt
git commit -m "Merge branch master into branch (commit D)"
git checkout start
git checkout -b goodbye-branch
echo Goodbye > Goodbye.txt
git add Goodbye.txt
git commit -m "Add Goodbye.txt (commit E)"
到目前为止,一切都顺利进行。虽然出现了合并冲突,但我们已经解决了它。现在我们尝试将分支重新基于 E 进行变基,以便最终得到以下提交树:
A---E----B'
\ \
C'---D'
git checkout branch
git rebase -p goodbye-branch
这以以下错误结束:
Auto-merging Hello.txt
CONFLICT (content): Merge conflict in Hello.txt
Automatic merge failed; fix conflicts and then commit the result.
Error redoing merge f567809e2cc91244cc7fdac210e1771dc75e4d86
该文件包含以下内容:
Hello
<<<<<<< HEAD
Dave
=======
World!
>>>>>>> 0437403c97f33f229e41ec9584ce891a50052e48
我做错了什么?我原以为Git可以使用提交来解决在rebase过程中遇到的合并冲突。
我正在使用Git 1.9.4.msysgit.1,这是目前最新的版本。