微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

git rebase什么时候会有冲突?

如何解决git rebase什么时候会有冲突?

我一直在阅读该论坛上的几篇文章,progit,Youtube以及一些随机博客以作为基础。

总结此主题的最一般形式是:

- A - B - C   Master
   \  D - E Topic

我执行:

git checkout Topic
git rebase Master

理想情况是:

- A - B - C - D' - E' Master,Topic

但是,这两个问题是:

  1. D'= D,E'= E吗?
  2. 什么是git rebase冲突?

关于第一个问题和this post

  1. Rebase确实要在D和E上进行合并,尤其是要使用复杂的输入进行合并。

例如,根据帖子以及我是否正确,转到D时

  1. HEAD脱离了C
  2. Git在从A到D的变化与从A到C的变化之间进行比较
  3. 合并后,git在D',D和E之间进行比较

这让我最困惑。为什么合并涉及两次以上提交?另外,冲突如何出现?

编辑:

运行了一些命令,请参见以下内容

git init

创建了Random.txt 内容:硕士1

git add Random.txt
git commit -m "Master 1"

创建新分支

git checkout -b rebase_conflict

更改Random.txt 内容:1

git add Random.txt
git commit -m "Conflict 1"

更改随机。文本文件 内容:2

git add Random.txt
git commit -m "Conflict 1"

切换到主控

git checkout master

更改Random.txt 内容:大师2

git add Random.txt
git commit -m "Master 2"

切换分支并重新设置

git checkout rebase_conflict
git rebase master

获取冲突错误 修改Random.txt 内容:1

git add Random.txt
git rebase --continue

在这一点上,由于逻辑上的原因,我预计还会发生另一个基准冲突

-- Master 1 -- Master 2
  \ -- Conflict 1 -- Conflict 2

第一次重新设置

-- Master 1 -- Master 2 -- Conflict 1'
 \ -- Conflict 1 -- Conflict 2

在此阶段,我期望在“冲突1”的基础上进行新的提交。冲突2和冲突1'之间没有合并冲突吗?

因为冲突1'Random.txt内容:1,而

冲突2 Random.txt内容:2

他们改变了同一行,不是吗?

解决方法

在上面的示例中进行合并或重新建立基础都可能导致合并冲突。可能只有一个或另一个也会有冲突。要了解变基的作用,请考虑下图,该图显示了在Topic变基后Master的外观:

Topic:  -- A -- B -- C -- D' -- E'

此处的撇号表示DE提交已重新应用到Master的新基础上。重新提交每个提交时,存在合并冲突的机会。因此,在重新应用N个提交的情况下,可能会有N组合并冲突。另一方面,合并将始终导致最多一组合并冲突。如果您对此感到担忧,那么您可能更喜欢合并而不是重新定级。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。