我不是 Git 专家,但我无法理解在我的案例中 git rebase
的奇怪行为:
1. 使用 git init
创建本地空 git 存储库
2. 创建一个简单的文本文件file.txt,内容如下:
111
222
333
3.使用 git add file.txt
将 file.txt 添加到索引,并使用 git commit
提交更改
4.使用git checkout -b功能
切换到新分支
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功能切换到feature分支;现在file.txt具有以下内容:
111
444
333
15。使用 git rebase master 将 feature 分支重新设置为 master 分支;现在我在 file.txt 中存在冲突,并且该文件具有以下内容:
111
<<<<<<< HEAD
777
222
888
=======
>>>>>>> 2
333
而不是预期:
111
<<<<<<< HEAD
777
222
888
=======
444
>>>>>>> 2
333
所以我的问题是:为什么文本 444
从 file.txt 中消失?可以吗?
最佳答案
当您执行git rebase master
时会发生这种情况:
- 工作树重置为
master
- 当前分支中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/