我在2个分支上搞砸git。 Frontend
包含了大量正在进行的开发工作 - 它应该被分割成多个分支,并且有点混乱。
情况如此 - frontend
位于左侧,master
的顶部位于右侧:
| frontend 1: newest commit (to be pushed)
| frontend 2: recent commit (to be pushed)
| frontend 3: week-old commit (this was a temporary save of lots of ongoing work - it probably should have been a stash. This one cannot be pushed)
|
| | master: this is the current state of the site
| | master: previous commit
| /
|/
| master before `git branch frontend`
在分支frontend
上,我想:
frontend 1
和frontend 2
转移到master
,以便现在可以推送它们。frontend 3
并将代码移回分段,这样我就可以正确地进行提交(即不在大量的一般工作中)我是git的初学者,我担心如果我继续输入命令试图让它变得更好,我会做更多的伤害(正如我已经做过的那样)。如果你能够提供帮助,我将不胜感激。谢谢。
答案 0 :(得分:2)
frontend 3
是最新的。 git reset HEAD^
以“取消提交”前端3。git stash
将frontend 3
的更改隐藏起来frontend
合并到master
。 (或者改变,无论你做什么。)这假设交互式rebase实际上可以干净地执行 - 即frontend 3
中的更改与frontend 1
和frontend 2
中的更改无关。
答案 1 :(得分:0)
您可以cherry-pick
将您想要的两个提交重新master
。然后rebase -i
上的frontend
将允许您重新排序并拆分分支上的提交,无论您喜欢什么。
答案 2 :(得分:0)
最简单的方法可能是挑选frontend2
和frontend1
到主人,然后挑选frontend3
并进行软重置。