git rebase 导致代码恢复到旧提交

问题描述 投票:0回答:1

我一直在我的分支上工作。我定期进行 git add、提交和推送。在创建拉取请求之前,我通常会执行

git rebase QA
操作,以便根据 QA 分支对其进行变基。今天我遇到了一个以前从未遇到过的案例。当我这样做
git rebase
时,发生了一些冲突。像往常一样,我解决冲突、分阶段并提交冲突。但是,某些文件没有显示最新的代码,而是显示了我之前提交的代码。 例如: 质量保证代码:

getLeca();
        getPews();
    }, []);

我的分行最新代码:

if (specialty === VETERINARY && !selectedPet) return;
        if (specialty === DENTAL) {
            getLeca(); // Mortality score
        }
        getPews(); // economic well Being
    }, [selectedPet]);

我之前的提交:

        if (specialty === DENTAL) {
            getLeca(); // Mortality score
        }
        getPews(); // economic well Being
    }, [selectedPet]);

我在变基过程中看到的是之前的提交。我不知道为什么会发生这种情况。 任何见解将不胜感激。谢谢你。

git git-rebase
1个回答
0
投票

所以你有:

[QA Branch]     A --- B --- C --- D --- E
                 \
[My Branch]       F --- G --- H
  • A-E 是 QA 分支上的提交。
  • F-H 是您在我的分支上的提交,其中 H 是最新的。
  • 在变基期间,Git 尝试在 E 之上应用 F、G 和 H。

问题出现在冲突解决过程中:

[Rebase Process]    A --- B --- C --- D --- E --- F' --- G' (?) --- H' (?)
  • F'、G'、H' 是重新调整基准的提交。
  • 在这些重新调整基准的提交过程中通常会遇到冲突。

首先...备份您的分支 (

git branch backup-my-branch my-branch
) 然后执行
git log --decorate --oneline --graph --all --branches
查看您的分支和 QA 分支的历史记录。这可以帮助您了解正在引入哪些更改以及哪里可能会发生冲突。

我知道,当我解决冲突时,它并不总是在最新的代码上,因为在这个例子中,G 显示了“先前的提交”。解决冲突后,

git add
文件,然后
git rebase --continue
:变基完成后(使用
git status
检查),您应该会看到最新的更改。

© www.soinside.com 2019 - 2024. All rights reserved.