我重新调整了我的分支,这起到了将一些提交放在我自己的之上的效果。然后意识到我忘记压缩一些提交,所以硬重置并压缩。现在我需要恢复这些提交。但是变基再次告诉我当前分支是最新的,尽管它不是。有办法解决这个问题吗?
编辑:
有两个分支:a 和 b。两者都是从 master 分支出来的。两者都与主人保持最新状态。分支a有一些变化。我希望分支 b 也有这些更改。我将分支 a 重新设置为 b。最新提交来自分支 a。我的意思是压缩该提交之前的三个提交。我硬重置到最新提交之前。然后我就崩溃了。现在我想以一种在将分支 b 合并到 master 时不会引起头痛的方式取回最新的提交。
我已经尝试过
reflog
和 git reset --hard HEAD@{n}
但同样的问题:当前分支是最新的。
就我而言,
--force-rebase
有帮助。我想,在你的情况下,它会是:
git checkout b
git rebase --force-rebase a
就我而言,问题很简单,与 origin/master 相比,master 已经过时了,所以我必须运行:
git branch -f master origin/master
这可能是因为您还没有将更改拉到分支主机上的本地。试试这个:
git checkout master
。git pull
。git checkout {current}
。Git rebase master
。如果您有提交 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
如果您没有推送该变基,您可以硬重置到远程存储库分支。
git reset --hard origin/your-branch-name
就我而言,我有以下 4 个分支
阅读
|............头 -> 写
|............CPU
|......../
大师
它说当我运行时当前分支是最新的
git rebase master
write
分支已经重新定位master
,但我希望它是
阅读
|............CPU
|............头 -> 写
|......../
大师
所以我运行
git rebase -i HEAD~2
然后手动删除 cpu
中的更改...=)))我知道这看起来很愚蠢