繁体   English   中英

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

[英]Git rebase not applying to latest commit of a branch

我在 git 变基期间遇到了一个奇怪的问题

我有一个名为 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。 但是如果我切换 Networkconfigs C2 更改存在(即 Result.txt 存在)

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 中排在第一位......如果使用交互式,则可以改变它们的顺序),当然,你在您完成应用C1更改之前,不会在HEAD上看到C2的更改。

假设你的分支现在看起来像这样:

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

现在,假设你运行这个:

git checkout some-branch
git rebase main

这将意味着GHI (或等价物,更确切地说)将在F之上,对吧? 但这并不是魔术发生了。 Git 必须一次应用一个更改,所以....如果在应用H时有冲突,你看看你现在所在的分支,你会发现它看起来像这样:

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

请注意,在HEAD上, I还没有应用,所以不要指望在您所在的位置看到来自该提交的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM