Git:虽然我做了Git pull,但推送一些裁判失败
当我更改一些文件并尝试进行推送时,我开始出现“推送某些引用失败”错误。大多数指令都告诉我们先做git pull。我已经做了,git说一切都是最新的。你知道如何解决这个错误吗?我也开始收到“没有可用的版本信息”的消息,我不知道这是否与错误有关Git:虽然我做了Git pull,但推送一些裁判失败,git,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
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'
错误在于,其他人已将
主
分支推入,如果git
允许您推入,您将覆盖他们的更改(这就是非快进
错误的含义)。因此,您需要将本地master
分支与远程master
分支合并
如果您在本地分支不是主分支的情况下执行了git pull
,则可能会发生这种情况。如果您只想推送正在处理的分支,而不想推送master
分支,则需要使用git push
的完整形式告诉它git
:
$ git push remote local-branch:remote-branch
一定要确认拉力确实起作用。合并(是拉的一部分)可能失败
当我收到这个错误消息时,我没有注意到拉失败。由于一些未提交的文件更改(与我试图推送的文件无关),导致合并失败,因此推送失败。我恢复了那些文件更改(因为它们并不重要),然后再次执行拉操作。成功拉取后,推送工作。最好的答案是Git帮助
处理非快进错误
将提交(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来覆盖远程,但只有在绝对确定这是您想要做的事情时,才应该这样做。强制推送可能会导致获取远程分支的其他用户出现问题,这被认为是不好的做法。当有疑问时,不要强制执行push。此外,如果在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
确保您的分支未受保护,或者检查了开发人员可以推送
1) git stash
2) git pull
3) git push
我的原始错误:
在“吉特藏匿”之后
尝试此命令git push-f origin master
如果在另一个位置克隆存储库并尝试推送它,会发生什么情况?我如何将本地主分支与远程主分支合并?无论如何,我注意到git分支使用了一个名为(No branch)的分支。我做了checkout master,现在我可以做push/pull当你做git pull
时,它会执行一个'git fetch',然后与当前分支跟踪的远程分支进行git merge
。您可以使用git merge master
进行手动合并。这是一条注释,不是应答合并:origin-不是我们可以合并的东西