Git rebase不应用于分支的最新提交



我在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中列在第一位……)考虑到它们的顺序可以被打乱,如果使用交互式),当然,你不会看到C2HEAD上的变化,直到你已经应用了C1的变化。

假设你的分支现在是这样的:

A <- B <- C <- D <- E <- F <- (main)
^
- G <- H <- I <- (some-branch)

现在,假设你运行这个:

git checkout some-branch
git rebase main

这意味着G,HI(或者等价的)将位于F之上,对吗?但这又不是魔法。Git必须一次应用一个更改,所以....如果在应用H时存在冲突,并且您查看当前所在的分支,您会发现它看起来像这样:

A <- B <- C <- D <- E <- F <- G' <- (HEAD)
^              ^
|               - (main)
- G <- H <- I <- (some-branch)

注意HEAD,I还没有应用,所以不要期望看到你所站的地方的代码。