在git中摆脱2分支的混乱局面

时间:2012-02-03 01:28:10

标签: git git-branch

我在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 1frontend 2转移到master,以便现在可以推送它们。
  • '取消'frontend 3并将代码移回分段,这样我就可以正确地进行提交(即不在大量的一般工作中)

我是git的初学者,我担心如果我继续输入命令试图让它变得更好,我会做更多的伤害(正如我已经做过的那样)。如果你能够提供帮助,我将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:2)

  1. 执行interactive rebase重新排列前端提交的顺序,以便frontend 3是最新的。
  2. 然后,在前端时,在保持更改的同时,执行git reset HEAD^以“取消提交”前端3。
  3. git stashfrontend 3的更改隐藏起来
  4. 切换到主人。
  5. frontend合并到master。 (或者改变,无论你做什么。)
  6. 随时随地弹出隐藏的更改并继续工作。
  7. 这假设交互式rebase实际上可以干净地执行 - 即frontend 3中的更改与frontend 1frontend 2中的更改无关。

答案 1 :(得分:0)

您可以cherry-pick将您想要的两个提交重新master。然后rebase -i上的frontend将允许您重新排序并拆分分支上的提交,无论您喜欢什么。

答案 2 :(得分:0)

最简单的方法可能是挑选frontend2frontend1到主人,然后挑选frontend3并进行软重置。