【问题标题】:Revert git push to wrong branch将 git push 恢复到错误的分支
【发布时间】:2015-03-11 06:23:56
【问题描述】:

我发生了 git 事故。

我在本地分支机构工作 "feature1"
我想做"git push not-origin feature1:master"
相反,我不小心做了"git push origin feature1:master"

这造成了很多混乱,并使提交交错(并不是说我可以只恢复特定的提交)

考虑到我在本地没有更新版本的 master 所以我不能强制推送它,有什么办法可以恢复它?

PS:我没有找到任何方法来阻止推送到 master 而不升级到 Enterprise,这对于这个项目来说太贵了......

【问题讨论】:

    标签: git github reverting


    【解决方案1】:

    考虑到我在本地没有更新版本的 master 所以我不能强制推送它,有什么办法可以恢复它?

    我认为你错了;只要您没有进行强制推送(带有--forced 标志的推送),只有当远程引用位于当前引用的路径上时,git push 才会成功,即您当前的分支没有分歧从你的远程主分支。

    这意味着你的分支feature1 有一些提交C,这就是master 所指向的。

    所以你需要做的就是找出C,使用git branch master_recovered C创建一个新分支,然后使用git push -f origin master_recovered:master强制将该分支推送到master。

    【讨论】:

    • 哇,我其实一开始并不相信你,但是它在两个分支上都用不冲突的提交对其进行了测试,它仍然不允许我按照问题中的描述进行推送,你是对的!谢谢!
    • 谢谢!我从一个分离的分支上做了一个 push -f,我感觉很糟糕!但这解决了它! (对于那些可能想知道如何获得 C 的人,只需运行 'git log')
    猜你喜欢
    • 2012-07-19
    • 1970-01-01
    • 2018-04-13
    • 2014-11-20
    • 2017-01-05
    相关资源
    最近更新 更多