从GitHub拉取和推送时出现错误

3
我过去几天一直在处理一个分支,当我合并它并尝试推送时,我一直收到像这样的错误,请问有人能解释一下吗?
在推送时:
To git@github.com:****************/88888888888888888.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:****************/88888888888888888.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

在获取数据时

    error: unable to resolve reference refs/remotes/origin/wishlist: No error
From github.com:****************/88888888888888888
 ! [new branch]      wishlist   -> origin/wishlist  (unable to update local ref)

确保您的本地分支已提交您想要保留的所有内容。尝试重置任何您不想保留的文件,然后执行拉取操作。 - Joe Phillips
1个回答

3
关于你的推送问题,GitHub指出:
处理“non-fast-forward”错误
有时在推送时可能会遇到这个错误:
 $ git push origin master To ../remote/  ! [rejected]
 master -> master (non-fast forward)    error: failed to push some refs to '../remote/' 

 To prevent you from losing history, non-fast-forward
 updates were rejected Merge the remote changes before pushing again. 
 See the 'non-fast forward' section of 'git push --help' for details.

这个错误可能一开始会让人感到有些不知所措,不用担心。简单来说,如果没有提交记录,git无法在远程进行更改,因此它会拒绝推送。通常情况下,这是由于另一个用户向同一分支推送所致。您可以通过获取和合并远程分支或使用拉取同时执行两者来解决此问题。

在其他情况下,此错误是由于使用类似git commit --amendgit rebase命令在本地进行破坏性更改引起的。虽然您可以通过在推送命令中添加--force来覆盖远程,但只有在您确信这正是您想要做的时候才应该这样做。强制推送可能会对已获取远程分支的其他用户造成问题,并被视为不良做法。如果不确定,请不要强制推送。


关于获取问题,您能否使用以下命令中的verbose模式提供更多信息(请将origin替换为您的远程名称)?

git fetch -v origin

编辑:

我刚刚无问题地克隆了您的GitHub存储库。您的本地存储库可能略微损坏。如果没有您本地configpacked-refs文件、logsrefs文件夹的副本,远程故障排除可能会非常棘手。

但是,有一种简单的方法可以解决获取问题。在不同的本地文件夹中克隆一个全新的GitHub存储库,然后从那里重新开始。这将重置您的引用并消除您的问题。


这是我运行git fetch -v origin命令时得到的结果。来自github.com:***/Street_Heart_Project = [最新] productImage -> origin/productImage = [最新] search -> origin/search = [最新] securityc -> origin/securityc = [最新] thankyou -> origin/thankyou = [最新] welcomePage -> origin/welcomePage 错误:无法解析参考refs/remotes/origin/wishlist: 没有错误 !【新分支】 wishlist -> origin/wishlist(无法更新本地引用) - Danny Connolly
@DannyConnolly 这对你有帮助吗? - nulltoken
不用了,我不需要这个分支了,因为它已经与主分支合并了,我可以直接删除它吗? - Danny Connolly
如果您已成功在本地合并它,您确实可以删除跟踪分支。由于它仍然存在于服务器上,下次抓取时,Git 将尝试重新构建它。如果幸运的话,问题可能已经解决了。如果不是这种情况,我建议您从损坏的本地存储库中复制补丁到新的存储库中,将结果提交推送到新的存储库中,然后放弃旧的存储库。 - nulltoken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接