git 当它说当前分支是最新的,即使它不是最新的,如何重定基?

s4n0splo  于 2022-12-10  发布在  Git
关注(0)|答案(4)|浏览(382)

我重定了我的分支的基础,这有把一些提交放在我自己的之上的效果。然后意识到我忘记了挤压一些提交,所以硬重置和挤压。现在我需要把这些提交回来。但重定基础再次告诉我,当前分支是最新的,即使它不是。有办法解决这个问题吗?
编辑:
有两个分支:a和B。两者都是从master分支出来的。两者都是master的最新版本。分支a有一些更改。我希望分支b也有这些更改。我将分支a的基础重定为b。最新的提交来自分支a。我本想压缩提交之前的三个提交。我硬重置为最新提交之前。然后我压缩了。现在我想以一种不会“当将分支B合并到主分支时,
我已经尝试了refloggit reset --hard HEAD@{n},但同样的问题:当前分支是最新的。

gg0vcinb

gg0vcinb1#

在我的情况下,--force-rebase有帮助。我想,在你的情况下,它会是:

git checkout b
git rebase --force-rebase a
mzillmmw

mzillmmw2#

如果你有提交的id,你可以使用交互式重定基并手动添加它们。
假设您的原始分支是master,您可以执行以下操作:

git rebase -i master

你会收到这样的信息:

pick 000000 Name of a commit
pick 000001 Name of another commit

您可以使用要添加的commitId添加另一个pick bbbbbb,如下所示

pick 000000 Name of a commit
pick bbbbbb
pick 000001 Name of another commit

如果要挤压提交,可以执行以下操作:

pick 000000 Name of a commit
squash bbbbbb
pick 000001 Name of another commit

挤压操作会将较低的提交附加到前一个提交,即00000

mwg9r5ms

mwg9r5ms3#

如果你没有推送那个rebase,你可以硬重置到remote repository分支。

git reset --hard origin/your-branch-name
ndh0cuux

ndh0cuux4#

在我的例子中,问题仅仅是与origin/master相比master已经过时,所以我必须运行:

git branch -f master origin/master

相关问题