我为错将一个分支'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 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-将忽略您的强制选项,并且still拒绝进行您请求的更改。 (这是对尝试without --force
标志的正常响应。)
如果是这种情况,您将无法直接进行此更改。您将必须找到does有权进行更改并进行更改的人员。这可能涉及登录名为demadev
的计算机。那里的Git存储库可能会将receive.denyNonFastForwards
设置为true
。
由于远程节点上的权限,您无法执行此操作,因此还有另一种方法:恢复提交的旧状态并将其作为新提交推送。
此命令将从签入中将所有文件签出到当前目录中。
git checkout 226b5cf7 -- .
尽管不会删除新创建的文件。您需要找到它们并通过将文件列表与重置提交区分开来手动删除它们。
现在您可以提交并推送。