Git:尽管我已经完成了git pull,但未能推出一些裁判

时间:2011-08-29 10:08:03

标签: git

当我更改了一些文件并尝试执行推送时,我开始'错误地推送一些引用'错误。大多数指令都告诉你先做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'

7 个答案:

答案 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 --amendgit 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)

1) git stash 
2) git pull
3) git push

我原来的错误:

enter image description here

在“git stash”之后

enter image description here

答案 6 :(得分:0)

尝试此命令git push -f origin master