非常stange git rebase行为

时间:2017-11-07 18:49:38

标签: git rebase

我不是Git专家,但在我的情况下,我无法理解git rebase的奇怪行为:
1.使用git init创建一个本地空的git reposiory 2.使用以下内容创建一个简单的文本文件 file.txt

111
222
333

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

111
333

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

111
444
333

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

111
222
333

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

111
777
222
333

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

111
777
222
888
333

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

111
444
333

15。使用git rebase master将rebase 功能分支到分支;现在我在 file.txt 中存在冲突,该文件包含以下内容:

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

而非预期:

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

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

1 个答案:

答案 0 :(得分:3)

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

  1. 工作树重置为master
  2. 逐个应用当前分支中的fork point之后的提交
  3. 示例中的冲突发生在fork point之后的feature中的第一次提交中。这是您使用222删除该行的提交。

      

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

    它没有消失。 它还没有出现。解决了这个冲突后rebase --continue,它将在下次提交时出现。