我陷入了纠结之中。
我提交了一项重组更改,将功能大幅降低到master
。 (我认识到这是一个错误。)
这开始引起问题,因为在应用该更改的情况下使用该程序是不可行的,但我已经对master
进行了进一步的,无关的改进。
所以,我在master
上恢复了重组更改,并在恢复之前基于提交开始了一个新的分支(比如restructure
)。
现在的问题是,我已经向master
提出了进一步的有价值的提交,我希望将其引入restructure
以简化其发展。但git merge
试图应用初始重组的恢复 - 哎呀!
我现在不知道该怎么做,而且我觉得现在做出错误的决定可能会使合并后期的master
大大复杂化。
为了进一步复杂化,restructure
分支已被推送。但是,如果它能清除所有这些混乱,我不介意使用git push --force
;从那时起,只有少数人撤离了存储库。
我接受这个问题的真正解决方案可能无法回答所提出的问题 - 这绝对感觉像是一个XY Problem场景 - 但我必须在标题中添加一些 :)
注意:我意识到所有这些都是一个糟糕的git工作流程的症状,这对我来说当然更有利于将来做得更好。但是,我不能追溯到没有做错事,所以我的问题仍然存在:)
答案 0 :(得分:4)
由于你没有推入master(?),即使你也可以强制推送并重写历史记录,你只需要掌握git rebase -i
并删除重组提交本身而不是恢复然后创建来自master本身的restructure
分支(因为无论如何你都要合并)并继续工作。
答案 1 :(得分:3)
您可以使用git cherry-pick从master中选择您想要提交到新分支的提交。它只会带来指定的哈希标记的更改。查看git-cherry-pick的手册页。