我重新设置了分支的基础,该分支的效果是在我自己的基础上添加了一些提交。然后意识到我忘记了压缩一些提交,所以很难重新设置并压缩。现在,我需要把那些提交带回来。但是重新调配告诉我当前分支是最新的,即使不是。有没有办法解决这个问题?
编辑:
有两个分支: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
Run Code Online (Sandbox Code Playgroud)
如果您有提交的 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
| 归档时间: |
|
| 查看次数: |
3110 次 |
| 最近记录: |