每次我推动时都会出现此错误。仅适用于此工作目录。不是在另一个类似的地方,我可以告诉它具有相同的权限。
$ git push
Counting objects: 15, done.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (8/8), 683 bytes, done.
Total 8 (delta 5), reused 0 (delta 0)
remote: Sending mail...
To git@devel.site.com:mysite.git
dd36358..86bc572 redesign -> redesign
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@devel.site.com:mysite.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 pull看起来工作正常,git push似乎也经历了但我仍然得到错误。
有什么想法吗?
答案 0 :(得分:0)
<强>咳咳强>
Merge the remote changes (e.g. 'git pull') before pushing again.
这对于我来说,看起来看起来像是一个权限问题。
答案 1 :(得分:0)
这不是权限问题;请参阅错误消息:
错误:未能将某些引用推送到'git@devel.site.com:mysite.git' 为了防止您丢失历史记录,拒绝了非快进更新 在再次推送之前合并远程更改(例如'git pull')。见 有关详细信息,请参阅“git push --help”的“快速转发”部分。
git push --help
的“关于快进的注释”部分对问题有一个冗长的解释,但简而言之;您要推送的分支不是当前分支的直接祖先,因此远程服务器不会让您推送。您需要修复本地更改(例如git pull
以获取您所缺失的更改,或git rebase
将您的更改重新绑定到远程头上),或强制远程服务器接受推送{{ 1}}(后者几乎从不是正确的举动)
答案 2 :(得分:0)
如果这仍然是一个问题,如果你git push
,那么你推动所有分支,而不仅仅是当前分支。
git pull
与git push
没有直接对立。它与执行以下命令完全相同:
git fetch
git merge origin/thecurrentbranch
也就是说,git pull
仅合并工作分支。它不会合并任何其他分支。
如果git pull
出现干净,但仍然无法推送,则表示您的其他分支已过时,这就是git抱怨的内容。
解决方案是只推送你当前的分支:
git push origin thecurrentbranch
请注意,我假设thecurrentbranch
是您的活动分支的名称,而origin
是您的上游存储库。
编辑:仔细研究一下你原来的问题是有启发性的:
dd36358..86bc572 redesign -> redesign
! [rejected] master -> master (non-fast-forward)
您可能已签出redesign
,因此这是git pull
正在运行的内容。但是,git拒绝master
分支。因此,要解决此特定问题,请明确推送redesign
,或执行此操作:
git checkout master
git merge origin/master
git push