Git:在恢复之前合并分支后的更改

时间:2011-12-14 06:24:22

标签: git

我陷入了纠结之中。

我提交了一项重组更改,将功能大幅降低到master。 (我认识到这是一个错误。)

这开始引起问题,因为在应用该更改的情况下使用该程序是不可行的,但我已经对master进行了进一步的,无关的改进。

所以,我在master上恢复了重组更改,并在恢复之前基于提交开始了一个新的分支(比如restructure)。

现在的问题是,我已经向master提出了进一步的有价值的提交,我希望将其引入restructure以简化其发展。但git merge试图应用初始重组的恢复 - 哎呀!

我现在不知道该怎么做,而且我觉得现在做出错误的决定可能会使合并后期的master大大复杂化。

为了进一步复杂化,restructure分支已被推送。但是,如果它能清除所有这些混乱,我不介意使用git push --force;从那时起,只有少数人撤离了存储库。

我接受这个问题的真正解决方案可能无法回答所提出的问题 - 这绝对感觉像是一个XY Problem场景 - 但我必须在标题中添加一些 :)

注意:我意识到所有这些都是一个糟糕的git工作流程的症状,这对我来说当然更有利于将来做得更好。但是,我不能追溯到没有做错事,所以我的问题仍然存在:)

2 个答案:

答案 0 :(得分:4)

由于你没有推入master(?),即使你也可以强制推送并重写历史记录,你只需要掌握git rebase -i并删除重组提交本身而不是恢复然后创建来自master本身的restructure分支(因为无论如何你都要合并)并继续工作。

答案 1 :(得分:3)

您可以使用git cherry-pick从master中选择您想要提交到新分支的提交。它只会带来指定的哈希标记的更改。查看git-cherry-pick的手册页。