当它说当前分支是最新的(即使不是最新的)时,如何重新计算呢?

max*_*nan 5 git rebase

我重新设置了分支的基础,该分支的效果是在我自己的基础上添加了一些提交。然后意识到我忘记了压缩一些提交,所以很难重新设置并压缩。现在,我需要把那些提交带回来。但是重新调配告诉我当前分支是最新的,即使不是。有没有办法解决这个问题?

编辑:

有两个分支:a和b。两者都是从master分支出来的。两者都是最新的大师。分支a有一些更改。我也希望分支b也有这些更改。我将分支a重新定位到b。最新的提交来自分支a。我的意图是在提交之前压扁这三个提交。我在最近一次提交之前硬重置为。然后我挤了。现在,我想以一种在将分支b合并到master时不会引起头痛的方式找回最新提交。

我已经尝试过refloggit reset --hard HEAD@{n}但存在相同的问题:当前分支是最新的。

nob*_*ody 6

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

git checkout b
git rebase --force-rebase a
Run Code Online (Sandbox Code Playgroud)


Nur*_*dez 0

如果您有提交的 ID,则可以使用交互式变基并手动添加它们。

假设您的原始分支是master,您可以执行以下操作:

git rebase -i master
Run Code Online (Sandbox Code Playgroud)

你会收到这样的东西:

pick 000000 Name of a commit
pick 000001 Name of another commit
Run Code Online (Sandbox Code Playgroud)

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

pick 000000 Name of a commit
pick bbbbbb
pick 000001 Name of another commit
Run Code Online (Sandbox Code Playgroud)

如果你想压缩提交,你可以这样做:

pick 000000 Name of a commit
squash bbbbbb
pick 000001 Name of another commit
Run Code Online (Sandbox Code Playgroud)

挤压操作会将您的较低提交附加到前一个提交,这意味着00000