【问题标题】:Revisit: Resetting remote to a certain commit重访:将远程重置为某个提交
【发布时间】:2018-12-12 00:25:42
【问题描述】:

我查看了Resetting remote to a certain commit,但它似乎不再有效。

我有一个与远程主机同步的存储库。其他人看不到遥控器,所以我觉得这样做很好:我想从遥控器中删除最后一个提交(并重新应用修改后的提交)。我尝试在那里看到的公式并得到错误。示例:

kevin@camelot-x:~/Desktop/Projects/qubic/qubist$ git push --force origin 105bd79119e069b9a1678d37c47a7e66db5b858a:master
Password: 
Total 0 (delta 0), reused 0 (delta 0)
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
To ssh://kogorman@git.code.sf.net/p/qubic/git
 ! [remote rejected] 105bd79119e069b9a1678d37c47a7e66db5b858a -> master (non-fast-forward)
error: failed to push some refs to 'ssh://kogorman@git.code.sf.net/p/qubic/git'
kevin@camelot-x:~/Desktop/Projects/qubic/qubist$

其他公式基本上给出了相同的抱怨。

【问题讨论】:

  • 我已经很长时间没有使用 SourceForge(并且不是用于 Git 项目),但这听起来像是一个受保护的分支功能——即远程 repo 已配置为不允许您重写历史记录。如果它属于您,您应该有权在网络界面的某处暂时关闭它。
  • @Ry 我是这个项目的唯一管理员。我查看了 Web 界面,找不到任何东西来调整 git 的工作方式。所以我还是卡住了。
  • SourceForge 可能会保护存储库免受强制推送。 SF 将裸存储库存储在文件系统中,因此您可以使用ssh 登录并编辑.git/config 或在存储库中运行git config receive.denyNonFastforwards false。见stackoverflow.com/q/12450703/7976758
  • @Nermanja 我对您引用的答案不满意。例如:“git push origin +HEAD^”被拒绝,因为“fatal: remote part of refspec is not a valid name in +HEAD^”

标签: git sourceforge


【解决方案1】:

根据用户 phd 的评论,我有一个解决方案。评论说

“SourceForge 可能会保护存储库免受强制推送。SF 将裸存储库存储在文件系统中,因此您可以使用 ssh 登录并编辑 .git/config 或在存储库中运行 git config receive.denyNonFastforwards false。请参阅 stackoverflow.com/q/ 12450703/7976758。”

所以大约十年来我第一次在 sourceforge 上使用 SSH,发现这完全正确。特别是,

ssh -t USER@shell.sourceforge.net create

(使用我的用户名而不是 USER)让我开始了,因此我进行了编辑:

vim /home/git/p/PROJECT/git.git/config

(替换项目名称)

有一个权限我必须更改为:

denyNonFastforwards = false

然后所有有问题的东西突然开始按文档说明工作。现在我将它改回来,因为这应该介于稀有和独特之间。

【讨论】:

  • 我现在希望在问题标题中包含对 SourceForge 的引用,因为事实证明它是特定于 SourceForge 的。
猜你喜欢
  • 2011-08-14
  • 1970-01-01
  • 2018-02-28
  • 2015-05-08
  • 2018-07-04
  • 1970-01-01
  • 2014-01-05
  • 2014-05-02
  • 2014-10-03
相关资源
最近更新 更多