【问题标题】:Revert server to past commit with bare repository hooks使用裸存储库挂钩将服务器恢复到过去的提交
【发布时间】:2013-07-01 21:49:16
【问题描述】:

我有一个带有裸 git 存储库的服务器,我推送到该存储库以进行实时部署。它有一个简单的post-receive 钩子,可以用master 上的最新版本更新我的服务器代码。

当在生产服务器上发现错误时,我有时需要恢复到特定的过去提交(我在本地测试自己,但我没有捕捉到所有内容)。有没有一种很好的*方法可以通过此设置恢复到过去的提交?

*我的意思是单行,比如推送到裸存储库:git push prod master

【问题讨论】:

    标签: git githooks git-bare


    【解决方案1】:

    如果您想在历史记录中保留您的错误,这将添加补偿您指定的提交的提交。 (master必须在本地签出)例如,如果要恢复上次提交,可以使用:

    git revert master
    git push origin master
    

    如果您想从历史记录中删除最后 2 个提交(master 必须在本地签出):

    git reset master~2
    git push -f origin master
    

    或者在不更改任何本地内容的情况下,这也应该有效:

    git push -f origin master~2:master
    

    最后两个将强制更新 master 到最后一个 master 提交的第三个。如果其他人已经撤消了您要删除的提交,这将是一个问题。

    【讨论】:

    • 请问有什么问题吗?谁也拉了提交来重置他们的本地分支?
    • @UgaBuga:不,这没问题,如果你将它传达给其他人并且他们在git fetch 之后在他们本地的master 分支上执行例如git reset --hard origin/master。但是,这将丢弃他们的本地提交和索引。如果他们想要在强制更新后保留本地提交,他们应该在更新的分支上重新定位它们。
    猜你喜欢
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 2011-09-03
    • 2011-05-06
    相关资源
    最近更新 更多