当我更改了一些文件并尝试执行推送时,我开始'错误地推送一些引用'错误。大多数指令都告诉你先做git pull。我已经做到了,git说一切都是最新的。知道如何解决错误吗?我也开始收到“没有可用版本信息”的消息,我不知道这与错误有什么关系。
git push origin master
git: /usr/local/lib/libz.so.1: no version information available (required by git)
Enter passphrase for key '/root/.ssh/id_rsa':
To git@[mydomain].beanstalkapp.com:/repo-git.git
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@[mydomain].beanstalkapp.com:/repo-git.git'
答案 0 :(得分:32)
错误是其他人已推入master
分支,如果git
允许您推送,则会覆盖其更改(这是non-fast forward
错误的含义)。因此,您需要将本地master
分支与远程master
分支合并。
如果您在本地分支不是git pull
分支时执行master
,则会发生这种情况。如果您只想推送正在处理的分支而不是master
分支,则需要使用完整形式的git
告诉git-push
:
$ git push remote local-branch:remote-branch
答案 1 :(得分:6)
最好的答案是关于Git帮助here
处理非快进错误
在将提交(git push origin master
)推送到GitHub时,您可能会遇到此错误:
To https://github.com/user/repo.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/user/repo.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.
这个错误起初可能有点压倒性;不要害怕!
简单地说,Git无法在不丢失提交的情况下对远程进行更改,因此它拒绝推送。通常,这是由另一个用户推送到同一分支引起的。
您可以通过获取和合并远程分支来解决此问题:
git fetch origin
git merge origin master
或者,您只需使用git pull一次执行两个命令:
git pull origin master
在某些情况下,此错误是通过使用git commit --amend
或git rebase
等命令在本地进行破坏性更改的结果。虽然您可以通过向push命令添加--force来覆盖远程,但只有在绝对确定这是您想要执行的操作时才应该这样做。强制推送可能会导致已经获取远程分支的其他用户出现问题,并被视为不良做法。如有疑问,请勿强行推动。
答案 2 :(得分:2)
确保您的分支机构不受保护,或者检查开发人员是否可以推送。
答案 3 :(得分:1)
务必确认拉力确实有效。合并(这是拉动的一部分)可能失败。
当我收到此错误消息时,我没有注意到拉动失败。由于某些未提交的文件更改(与我尝试推送的文件无关)导致合并失败,因此拉取失败。我还原了那些文件更改(因为它们并不重要),然后再次拉动。成功拉动后,推动工作。
答案 4 :(得分:1)
此外,当您将错误的分支名称放入push命令时,会发生错误。
例如,假设您在一个名为iss8
的分支上,但是你告诉git推送到iss3
(就像我刚才那样),你会得到同样的错误。
$ git push origin iss3
error: src refspec iss3 does not match any.
error: failed to push some refs to 'git@myhost.com:myuser/myproject.git'
嗯,检查状态:
$ git status
On branch iss8
nothing to commit, working directory clean
哦,看,我在另一个分支。谢谢git,不让我做一些非常愚蠢的事情。
$ git push origin iss8
Counting objects: 15, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (9/9), 2.62 KiB | 0 bytes/s, done.
Total 9 (delta 3), reused 0 (delta 0)
To git@myhost.com:myuser/myproject.git
* [new branch] iss8 -> iss8
答案 5 :(得分:0)
答案 6 :(得分:0)
尝试此命令git push -f origin master