Git 无需拉动即可推动更改
我正在尝试撤消一些已经推送到远程存储库的更改,我已经在本地通过Git 无需拉动即可推动更改,git,Git,我正在尝试撤消一些已经推送到远程存储库的更改,我已经在本地通过 git reset --hard COMMIT-HASH 但是现在它不让我不先拉就推,这当然违背了目的。我试过: git push -f 哪些错误与以下内容有关: Total 0 (delta 0), reused 0 (delta 0) remote: error: denying non-fast-forward refs/heads/master (you should pull first) To git@xxx.bea
git reset --hard COMMIT-HASH
但是现在它不让我不先拉就推,这当然违背了目的。我试过:
git push -f
哪些错误与以下内容有关:
Total 0 (delta 0), reused 0 (delta 0)
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
To git@xxx.beanstalkapp.com:/yyy.git
! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@xxx.beanstalkapp.com:/yyy.git'
那么,如何将新的、正确的分支版本发送到远程?您的服务器是否禁止非快进推送 git配置文件
[receive]
denyNonFastforwards = true
从
git config
手册页:
receive.denynonfastforts
如果设置为true,git receive pack将拒绝不是快进的ref更新。使用此选项可防止通过推送进行此类更新,即使该推送是强制的。此配置变量在初始化共享存储库时设置
您尝试推送到的服务器已启用此设置。所以,简短的回答是,在这种情况下,您将无法gitpush--force
要获得远程分支的正确版本,您必须对分支的尖端进行新的提交,以使其处于正确的状态。如果当前处于正确状态的提交,则可以运行以下操作:
$ git reset --soft <remote>/<branch> # point the ref back to the remote, but
# keep the index and working tree
$ git commit # make the 'correction' commit
$ git push
$git reset--soft/#将ref指向远程,但是
#保留索引和工作树
$git提交#进行“更正”提交
$git推送
撤消git中更改的最佳方法是使用git revert
命令
要撤消上次提交,请执行以下操作:
git还原头^
它将撤消上次提交时所做的更改,然后在其上创建一个新的提交
希望它能帮助别人。对你有帮助吗?@Hassan-对不起,没有。我已经回滚了我不想要的提交,现在问题是将其成功推送到远程。如果你已经在git服务器上回滚了提交,那么为什么你不能拉?默认情况下,可能会禁用重复的提交,并发出警告:“除非您知道自己在做什么,否则我们不建议您更改这些设置。Beanstalk提供了适用于大多数用户的合理默认设置。" ... 尽管启用它和强制推送可以解决问题,但在使用主题分支时,强制推送除master之外的分支是必不可少的。合并两个分支可能会导致代码丢失,因为它只比较给定分支的提示。重定基可爬过自最新公共祖先以来的所有提交,并提供更好的结果,但需要重写无法由快进处理的提交。git新手用户不知道什么是重定基址,所以这个选项对他们很好。