在git中回滚或重新创建主分支?
我有一个git repo,它有几个分支——有主分支,这是我们稳定的工作版本,还有一个开发/登台分支,我们正在其中做新的工作 不幸的是,在没有考虑的情况下,我似乎有点过于热衷于重定基址,并且在一段时间内将所有的暂存代码拉到了Master中(大约80次提交…是的,我知道,愚蠢、笨拙、糟糕的代码管理者等等) 正因为如此,我很难在当前版本的应用程序(rails应用程序)上做一些小的修改,并在不推出我们还不想发布的“阶段性”新功能的情况下推出这些更改 我想知道是否有可能做到以下几点:在git中回滚或重新创建主分支?,git,workflow,branch,Git,Workflow,Branch,我有一个git repo,它有几个分支——有主分支,这是我们稳定的工作版本,还有一个开发/登台分支,我们正在其中做新的工作 不幸的是,在没有考虑的情况下,我似乎有点过于热衷于重定基址,并且在一段时间内将所有的暂存代码拉到了Master中(大约80次提交…是的,我知道,愚蠢、笨拙、糟糕的代码管理者等等) 正因为如此,我很难在当前版本的应用程序(rails应用程序)上做一些小的修改,并在不推出我们还不想发布的“阶段性”新功能的情况下推出这些更改 我想知道是否有可能做到以下几点: 确定最后一次“中继”
谢谢 您是否已将提交推送到远程存储库?如果没有,您可以简单地使用git reset(请确保在之前阅读手册页,reset可能会很危险且令人困惑)将有发布问题(意味着您必须:
- 强制将新主机推到遥控器上
- 与已经从该遥控器拔出的任何人通信,以便他们将其主机重置为遥控器 )
m1-m2-m3-m4-s1-s2-s3-s4 (master,stage)
m1-m2-m3-m4-s1-s2-s3-s4-m5-m6 (master)
\
-s5-s6 (stage)
也就是说,如果您当前的主机实际上也是当前阶段的分支,则需要进行简单的重置(正如knittl在中提到的)
但如果您的情况是:
m1-m2-m3-m4-s1-s2-s3-s4 (master,stage)
m1-m2-m3-m4-s1-s2-s3-s4-m5-m6 (master)
\
-s5-s6 (stage)
如:“我已经将舞台融入大师,然后继续在大师身上工作!”,则一个顺序如下:
git checkout master
git reset --HARD m4
git rebase --onto master s4 m6
您将获得:
m1-m2-m3-m4-m5'-m6' (master)
\
-s1-s2-s3-s4-s5-s6 (stage)
很抱歉,我应该补充一点-这些提交已被推到远程,但我不介意再次强制推它们,我是唯一一个推到远程的人。好的,在这种情况下,请确保其他人也删除提交谢谢详细的回答,你和knittl的回答都非常有用。。。现在我只需要惩罚自己把工作流程搞砸了:P