当它说当前分支是最新的时,即使它不是最新的,如何进行变基?

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

我重新调整了我的分支,这起到了将一些提交放在我自己的之上的效果。然后意识到我忘记压缩一些提交,所以硬重置并压缩。现在我需要恢复这些提交。但是变基再次告诉我当前分支是最新的,尽管它不是。有办法解决这个问题吗?

编辑:

有两个分支:a 和 b。两者都是从 master 分支出来的。两者都与主人保持最新状态。分支a有一些变化。我希望分支 b 也有这些更改。我将分支 a 重新设置为 b。最新提交来自分支 a。我的意思是压缩该提交之前的三个提交。我硬重置到最新提交之前。然后我就崩溃了。现在我想以一种在将分支 b 合并到 master 时不会引起头痛的方式取回最新的提交。

我已经尝试过

reflog
git reset --hard HEAD@{n}
但同样的问题:当前分支是最新的。

git rebase
6个回答
7
投票

就我而言,

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

git checkout b
git rebase --force-rebase a

3
投票

就我而言,问题很简单,与 origin/master 相比,master 已经过时了,所以我必须运行:

git branch -f master origin/master

2
投票

这可能是因为您还没有将更改拉到分支主机上的本地。试试这个:

  1. 提交当前分支上的所有更改。
  2. 切换到主控
    git checkout master
  3. 拉动更改
    git pull
  4. 切换到“当前”分支
    git checkout {current}
  5. 尝试
    Git rebase master

0
投票

如果您有提交 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


0
投票

如果您没有推送该变基,您可以硬重置到远程存储库分支。

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

0
投票

就我而言,我有以下 4 个分支

阅读

|............头 -> 写

|............CPU

|......../

大师

它说当我运行时当前分支是最新的

git rebase master

write
分支已经重新定位
master
,但我希望它是

阅读

|............CPU

|............头 -> 写

|......../

大师

所以我运行

git rebase -i HEAD~2
然后手动删除
cpu
中的更改...=)))我知道这看起来很愚蠢

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