Git:将生产中的错误提交还原(或反转-i)

时间:2014-10-20 23:20:30

标签: git heroku git-rebase master git-revert

我们一直使用GitHub flow作为我们小型开发团队分支的基础。合并masterMaster被推送至staging(供审核),然后production。一个未经批准的功能卡在暂存时,而修补程序,可以这么说,从主分支,因此包括尚未批准的暂存代码,并被推送到production。从那以后,在那个“糟糕”的提交之上还有一些提交。

我们认为需要另一个共享分支,我们可以用它来进行分段而不是假设我们可以共享主分区,但是这个问题为时已晚。

我想恢复“糟糕”的提交,但不确定最好的方法。在这里和其他地方有很多关于如何做到这一点的讨论,但因为这是在制作中我想确保我完全理解分支。

主分支的伪git日志:

* 2ebe3b7 2014-10-20 | merge a new_feature (HEAD, new_feature, master)
* 4483c83 2014-10-20 | add second feature (second_feature)
* 602bd9d 2014-10-20 | add premature feature (premature_feature)
* c341b06 2014-10-20 | add fileB
* b7ffb78 2014-10-20 | initial commit

我可以:

  1. git revert 602bd9d
  2. git rebase -i c341b06并在没有违规602bd9d提交的情况下重写我的历史记录。
  3. 我没有太多的历史“重写历史记录”,因为将重写的历史记录推送到共享的Git仓库是如此禁忌。

    有合作者,origin/master包含过早的代码。什么是最干净的&最安全的方法是从主服务器上获取单个提交(因此停止生产)?寻找任何建议/陷阱。

    谢谢!

1 个答案:

答案 0 :(得分:0)

只需还原提交。有必要将重写历史推送到共享仓库是“禁忌”;在这种情况下,你必须确保所有使用过回购邮件的人都会git fetch后跟git reset --hard origin/master。人们应该将重写推送到服务器的唯一时间是当一个需要时,例如当机密信息意外发生时。