git - 非常奇怪的 git rebase 行为

标签 git rebase

我不是 Git 专家,但我无法理解在我的案例中 git rebase 的奇怪行为:
1. 使用 git init 创建本地空 git 存储库
2. 创建一个简单的文本文件file.txt,内容如下:

111
222
333

3.使用 git add file.txtfile.txt 添加到索引,并使用 git commit 提交更改
4.使用git checkout -b功能切换到新分支
5. 更改 file.txt,使其现在具有以下内容:

111
333

6.使用 git add file.txtfile.txt 添加到索引,并使用 git commit 提交更改
7. 更改 file.txt,使其现在具有以下内容:

111
444
333

8.使用 git add file.txtfile.txt 添加到索引,并使用 git commit 提交更改
9.使用git checkout master切换到master分支;现在file.txt具有以下内容:

111
222
333

10。更改 file.txt,现在它具有以下内容:

111
777
222
333

11。使用 git add file.txtfile.txt 添加到索引,并使用 git commit 提交更改
12. 更改 file.txt,使其现在具有以下内容:

111
777
222
888
333

13。使用 git add file.txtfile.txt 添加到索引,并使用 git commit 提交更改
14.使用git checkout功能切换到feature分支;现在file.txt具有以下内容:

111
444
333

15。使用 git rebase master 将 feature 分支重新设置为 ma​​ster 分支;现在我在 file.txt 中存在冲突,并且该文件具有以下内容:

111
<<<<<<< HEAD
777
222
888
=======
>>>>>>> 2
333

而不是预期:

111
<<<<<<< HEAD
777
222
888
=======
444
>>>>>>> 2
333

所以我的问题是:为什么文本 444file.txt 中消失?可以吗?

最佳答案

当您执行git rebase master时会发生这种情况:

  1. 工作树重置为master
  2. 当前分支中fork点之后的提交会一一应用

示例中的冲突发生在 fork 点之后 feature 中的第一次提交。这是您删除带有 222 的行的提交。

So my question is: why did the text 444 disappear from the file.txt? Is it ok?

它并没有消失。 它还没有出现。解决此冲突并rebase --continue后,它将出现在下一次提交中。

关于git - 非常奇怪的 git rebase 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47165394/

相关文章:

c# - 当 Resharper 显示 'Failed to modify Documents' 时,我需要一个解决方法。有谁知道它为什么这样做以及如何解决它?

git rebase - rebase 与 develop 和 origin/develop 之间的区别?

git revert 之后的 git rebase

git - 在变量中分配命令的结果

git - 如何 git-cherry-pick 只更改某些文件?

git - 是否可以将公共(public) GitHub 存储库 fork 到企业存储库中?

git - 在本地和服务器上处理多个 Git Head

Git Squash 作者按顺序提交以压缩历史记录

Git - 交互式 rebase 和压缩的问题

mercurial - 不小心只 rebase 了我的一个变更集