非常奇怪的 git 变基行为
Very stange git rebase behavior
我不是 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 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 结帐功能切换到功能分支;现在 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点之后的commit逐一应用
您的示例中的冲突发生在分叉点之后 feature
中的第一个提交上。这是您删除带有 222
.
行的提交
So my question is: why did the text 444 disappear from the file.txt? Is it ok?
它并没有消失。 它还没有出现。解决这个冲突后rebase --continue
,它会在下一次提交中出现。
我不是 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 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 结帐功能切换到功能分支;现在 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点之后的commit逐一应用
您的示例中的冲突发生在分叉点之后 feature
中的第一个提交上。这是您删除带有 222
.
So my question is: why did the text 444 disappear from the file.txt? Is it ok?
它并没有消失。 它还没有出现。解决这个冲突后rebase --continue
,它会在下一次提交中出现。