【问题标题】:reset an origin to a certain commit将原点重置为某个提交
【发布时间】:2020-02-03 22:08:01
【问题描述】:

我,因为错误将分支“dev”推送到存储库中的“origin/dev”,所以现在我想将这些分支重置为这个提交 226b5cf7。

我已经试过了: git reset --hard 226b5cf7 (所以现在我的开发被重置为那个提交) git push --force origin 226b5cf7:dev (重置 origin/dev,但不工作!!!)

我收到这条消息: 远程:错误:拒绝非快进 refs/heads/dev(你应该先拉) 到 ssh://demadev/volume1/Git/smile.git ! [远程拒绝] 226b5cf7 -> dev(非快进) 错误:未能将一些参考推送到 'ssh://codinera@demadev/volume1/Git/smile.git'

【问题讨论】:

  • git checkout -b tmp origin/dev; git reset --hard 226b5cf7; git push -f origin HEAD:dev; git checkout dev; git branch -D tmp;(如果您已经有tmp分支,则需要选择其他名称)

标签: javascript git github branch reset


【解决方案1】:

我已经尝试过这个:git reset --hard 226b5cf7(所以现在我的dev 被重置为那个提交)

这很好,但在技术上不是必需的。请注意,您首先必须git checkout dev 才能影响您的姓名dev

[后跟]git push --force origin 226b5cf7:dev(重置原点/开发,但不工作!!!)

这是必需的部分。

你说它“不工作”。如果您还说此命令的结果(包括--force 选项)是:

remote: error: denying non-fast-forward refs/heads/dev (you should pull first)
To ssh://demadev/volume1/Git/smile.git
  ! [remote rejected] 226b5cf7 -> dev (non-fast-forward)
error: failed to push some refs to 'ssh://codinera@demadev/volume1/Git/smile.git'

那么这意味着他们——codinera@demadev/volume1/Git/smile.git 的 Git——忽略了你的强制选项并且仍然拒绝做出你要求的改变。 (这将是对尝试没有--force 标志的正常响应。)

如果是这种情况,您将无法直接进行此更改。您必须找到确实有权进行更改的人,进行更改。这可能涉及登录名为demadev 的机器。那里的 Git 存储库可能将 receive.denyNonFastForwards 设置为 true

【讨论】:

  • 谢谢...是的,我想我没有权限这样做
【解决方案2】:

由于远程节点的权限,你不能这样做,还有另一种方法:恢复提交的旧状态并将其作为新提交推送。

此命令会将提交中的所有文件检出到当前目录中。

git checkout  226b5cf7 -- .

但它不会删除新创建的文件。您需要通过将文件列表与重置进行比较来找到它们,然后手动删除。

git diff 226b5cf7  --name-status

现在你可以提交和推送了。

然后您可以以类似的方式在更新之前恢复您的状态,以便以后能够推送它。

【讨论】:

    猜你喜欢
    • 2011-08-14
    • 1970-01-01
    • 2018-11-26
    • 2012-12-29
    • 2012-05-12
    • 2014-05-02
    • 1970-01-01
    • 2021-06-11
    • 2011-10-11
    相关资源
    最近更新 更多