我不确定这是否重复,因为它是一种一次性的情景:
我有一个“beta”分支,并启动了一个新的“重构”分支。
git checkout refactor && git pull origin beta
)git checkout beta && git pull origin refactor
)git pull
来最新测试。git pull origin refactor
以确保最新的那个(有一个自动提交消息,重构被合并到beta)。所以现在我意识到我做错了两件事:
git merge refactor
而不是git pull origin refactor
(不要问我为什么这样做,这是星期一,我只想把我真棒的重构代码放到beta开始测试)。我现在意识到,如果我已经完成了这两件事,那么后面的步骤都不需要。所以我的问题是这样的:技术上,所有的代码都在那里看起来很好,但github上的网络图看起来非常时髦,我没有一个干净的“合并”提交,我可以轻松回滚到我的合并分支需要还原,而beta现在已经从重构分支中提交了所有个人提交。有没有一种简单的方法可以回滚我的合并并以更干净的方式做到这一点?
我已经尝试过git checkout beta && git reset --hard beta@{"1 hour ago"}
了,但问题是让我进入过时的本地版本的测试版,而不是在我发布合并之前本应该是最新版本的版本应该先做git pull。我觉得应该有一种方法可以像git reset --hard origin/beta@{"1 hour ago"}
那样在1小时前重置为远程 beta分支,然后执行git merge refactor
?我是否能够推动这些更改并确保远程提交被覆盖?
提前感谢您的帮助!我对使用“git reset”做任何事都犹豫不决,因为重构非常重要,并且测试版有很多未决的变化,我没有这么做,所以我更担心搞砸重置并丢失代码我担心不得不手动恢复被拉入的重构分支的提交。
答案 0 :(得分:0)
你是否强行推动了beta分支?
如果是这样,我假设您不需要将此与其他开发人员同步,因此可以再次强制推送。在那种情况下,我建议:
如果你不能进行强制推动,那么你可以使图表更加复杂化。您可以为每个从重构中退出的提交执行还原提交。通过这种方式,您可以将beta分支变为干净且更新的状态。之后,只需重复上部食谱的最后3个步骤。你会得到漂亮的图表,但是在此之前的历史仍然存在。