我在git rebase过程中遇到了一个奇怪的问题
我有一个名为Networkconfigs的分支,有两个像C1 &C2,现在我想用master重新定位。冲突只会在C1变化的顶部出现。在解决冲突期间,我无法看到C2更改。
command used for rebase at Networkconfigs: git rebase master
branch Networkconfigs
At C1 commit I have a file : Sample.txt
At C2 commit I have replace the Sample.txt with Result.txt
在冲突解决期间,我可以在Networkconfigs中看到Sample.txt而不是Result.txt。但如果我切换网络配置C2变化存在(I。e Result.txt exists)
git log -5 --graph --oneline NetworkConfigFiles
* df3acf356 (origin/NetworkConfigFiles, NetworkConfigFiles) additional changes
* d7bb7a5dc Incorporate the review comments
* 5243f782f create Network config files
* fb372f921 Incrementing build version to 2.0.2495.0 ***NO_CI***
* 89ce8a232 Incrementing build version to 2.0.2494.0 ***NO_CI***
冲突正在增加W.R.T 5243f782f
Rebase更改应用一次一个因此,如果C2
在历史上位于C1
之后(实际上,如果C1
在rebase中列在第一位……)考虑到它们的顺序可以被打乱,如果使用交互式),当然,你不会看到C2
在HEAD
上的变化,直到你已经应用了C1
的变化。
假设你的分支现在是这样的:
A <- B <- C <- D <- E <- F <- (main)
^
- G <- H <- I <- (some-branch)
现在,假设你运行这个:
git checkout some-branch
git rebase main
这意味着G
,H
和I
(或者等价的)将位于F
之上,对吗?但这又不是魔法。Git必须一次应用一个更改,所以....如果在应用H
时存在冲突,并且您查看当前所在的分支,您会发现它看起来像这样:
A <- B <- C <- D <- E <- F <- G' <- (HEAD)
^ ^
| - (main)
- G <- H <- I <- (some-branch)
注意HEAD
,I
还没有应用,所以不要期望看到你所站的地方的代码。