我们一直使用GitHub flow作为我们小型开发团队分支的基础。合并master
。 Master
被推送至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
我可以:
git revert 602bd9d
git rebase -i c341b06
并在没有违规602bd9d
提交的情况下重写我的历史记录。我没有太多的历史“重写历史记录”,因为将重写的历史记录推送到共享的Git仓库是如此禁忌。
有合作者,origin/master
包含过早的代码。什么是最干净的&最安全的方法是从主服务器上获取单个提交(因此停止生产)?寻找任何建议/陷阱。
谢谢!
答案 0 :(得分:0)
只需还原提交。有必要将重写历史推送到共享仓库是“禁忌”;在这种情况下,你必须确保所有使用过回购邮件的人都会git fetch
后跟git reset --hard origin/master
。人们应该将重写推送到服务器的唯一时间是当一个需要时,例如当机密信息意外发生时。