git rebase奇怪的冲突,有未经证实的冲突

git rebase奇怪的冲突,有未经证实的冲突,git,conflict,rebase,Git,Conflict,Rebase,我有两个分支:大师,乔伊。 有一个名为“hello”的文件,我输入命令“git rebase joy”,并且存在冲突,冲突内容很奇怪 以下是具体步骤 一, git签出主机 猫你好 显示==> Hello world Hello world one line two line 二, 吉特结帐快乐 猫你好 显示==> Hello world Hello world one line two line 三, git签出主机 git rebase joy==> First, re

我有两个分支:大师,乔伊。 有一个名为“hello”的文件,我输入命令“git rebase joy”,并且存在冲突,冲突内容很奇怪

以下是具体步骤

  • 一,
git签出主机

猫你好

显示==>

 Hello world
Hello world
one line
two line
  • 二,
吉特结帐快乐

猫你好

显示==>

 Hello world
Hello world
one line
two line
  • 三,
git签出主机

git rebase joy==>

First, rewinding head to replay your work on top of it...
Applying: cherry-pick
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging hello
CONFLICT (content): Merge conflict in hello
Failed to merge in the changes.
Patch failed at 0001 cherry-pick
猫你好==>

Hello world
<<<<<<< HEAD
one line
two line
=======
add one line
add 2nd line
>>>>>>> cherry- pick
  • 五,
经过研究,我下面的版本树相当复杂

* <b04ea3b> 2012-06-09 [yaoyangyong]  (HEAD, joy) test rebase
* <5b595d6> 2012-06-09 [yaoyangyong]  joy clear hello
| * <eeba7d9> 2012-06-09 [yaoyangyong]  (master) clean hello
| *   <1dbc3b8> 2012-06-09 [yaoyangyong]  merge confilct
| |\  
| |/  
|/|   
| * <3cb9d88> 2012-06-09 [yaoyangyong]  modify master 1st line
* | <b1724ad> 2012-06-09 [yaoyangyong]  test merge
| *   <89a692f> 2012-06-09 [yaoyangyong]  merge from joy
| |\  
| |/  
|/|   
* | <dc96da9> 2012-06-09 [yaoyangyong]  modify second line
| *   <816f575> 2012-06-08 [yaoyangyong]  joy
| |\  
| |/  
|/|   
* | <93b5982> 2012-06-08 [yaoyangyong]  3line
| * <4400260> 2012-06-08 [yaoyangyong]  cherry-pick
* | <233d6f2> 2012-06-08 [yaoyangyong]  2nd line comment
* | <60d6edc> 2012-06-08 [yaoyangyong]  modify hello,add one line
|/  
:
* <b04ea3b> 2012-06-09 [yaoyangyong]  (HEAD, joy) test rebase
* <5b595d6> 2012-06-09 [yaoyangyong]  joy clear hello
| * <eeba7d9> 2012-06-09 [yaoyangyong]  (master) clean hello
| *   <1dbc3b8> 2012-06-09 [yaoyangyong]  merge confilct
| |\  
| |/  
|/|   
| * <3cb9d88> 2012-06-09 [yaoyangyong]  modify master 1st line
* | <b1724ad> 2012-06-09 [yaoyangyong]  test merge
| *   <89a692f> 2012-06-09 [yaoyangyong]  merge from joy
| |\  
| |/  
|/|   
* | <dc96da9> 2012-06-09 [yaoyangyong]  modify second line
| *   <816f575> 2012-06-08 [yaoyangyong]  joy
| |\  
| |/  
|/|   
* | <93b5982> 2012-06-08 [yaoyangyong]  3line
| * <4400260> 2012-06-08 [yaoyangyong]  cherry-pick
* | <233d6f2> 2012-06-08 [yaoyangyong]  2nd line comment
* | <60d6edc> 2012-06-08 [yaoyangyong]  modify hello,add one line
|/  
* <aeae413> 2012-06-08 [yaoyangyong]  add hello file
*2012-06-09[yaoyangyong](头,乔伊)测试重基
*2012-06-09【姚扬勇】乐清你好
|*2012-06-09【耀阳勇】(大师)清洁你好
|*2012-06-09【耀阳永】合并确认书
| |\  
| |/  
|/|   
|*2012-06-09【耀阳永】修改主一号线
*| 2012-06-09【耀阳永】试验合并
|*2012-06-09【耀阳永】与久益合并
| |\  
| |/  
|/|   
*| 2012-06-09【耀阳永】修改二线
|*2012-06-08【姚扬勇】乔伊
| |\  
| |/  
|/|   
*| 2012-06-08【耀阳永】3号线
|*2012-06-08【耀阳勇】樱桃采摘
*| 2012-06-08【耀阳永】二线评论
*| 2012-06-08【姚扬勇】修改你好,增加一行
|/  
:
*2012-06-09[姚扬勇](乔伊之首)测试回退
*2012-06-09【姚扬勇】乐清你好
|*2012-06-09【耀阳勇】(大师)清洁你好
|*2012-06-09【耀阳永】合并确认书
| |\  
| |/  
|/|   
|*2012-06-09【耀阳永】修改主一号线
*| 2012-06-09【耀阳永】试验合并
|*2012-06-09【耀阳永】与久益合并
| |\  
| |/  
|/|   
*| 2012-06-09【耀阳永】修改二线
|*2012-06-08【姚扬勇】乔伊
| |\  
| |/  
|/|   
*| 2012-06-08【耀阳永】3号线
|*2012-06-08【耀阳勇】樱桃采摘
*| 2012-06-08【耀阳永】二线评论
*| 2012-06-08【姚扬勇】修改你好,增加一行
|/  
*2012-06-08【姚阳勇】添加hello文件
  • 六,
作为比较,我重新创建了一个干净的文件夹,它的版本树非常简单,如下所示,然后我重新创建了基础,它成功了

* <0d63388> 2012-06-09 [yaoyangyong]  (joy) add two lines
* <1f9d2f4> 2012-06-09 [yaoyangyong]  (HEAD, master) add hello file
*2012-06-09【耀阳永】(久益)增加两行
*2012-06-09【耀阳勇】(校长、师傅)添加hello文件

我觉得这有点奇怪。通常情况下,您永远不想重新设置master的基础。重基通常在私有分支上执行,以便在合并时执行快进合并。使用rebase重定基址——在将提交合并到公共分支(主分支)之前,我还为您提供了挤压和修复提交的机会

我想看看这里,了解什么是重定基址,以及它的作用:

以你的例子来说,我希望有这样的情况:

1. 显示==>

Hello World
Hello World
one line
two line
2. 显示==>

Hello World
Hello World
one line
two line
3. 此时有两个提交,第一个提交存在于master和joy中,第二个提交仅存在于joy中。现在我们可以合并了,但是我们希望确保joy中的提交可以干净地应用(避免合并提交)。为了做到这一点,我们将把欢乐重新放在师父身上

仍在乔伊分行营业

或者,您可以使用交互式模式,该模式允许您挤压、修复、重新排序等

4. 现在我们有了joy分支,看看我们想要它的样子,并在master的基础上重新设置,我们可以切换到master,只需进行合并就可以得到一个漂亮的历史记录

git checkout master
git merge joy
5.重要的
当您执行重基时,这些提交的SHA-1标识符将更改。任何基于这些提交的工作的人都会因为提交的父项不再存在而导致很多不好的结果。这就是为什么您从不重新设置公共分支的基础。

您可能希望将配置变量
merge.conflictstyle
设置为
diff3
,因为这将向您显示来自合并公共基础的大块,这可能会更清楚“冲突”来自何处。
git checkout master
git merge joy