0

每次 git push 时都会出现此错误。仅用于此工作目录。不是在另一个类似的地方,据我所知,它具有相同的权限。

$ 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 似乎也可以通过,但我仍然收到错误。

有任何想法吗?

4

3 回答 3

0

咳咳

Merge the remote changes (e.g. 'git pull') before pushing again.

这对我来说真的不像是权限问题。

于 2011-08-03T00:23:44.110 回答
0

这不是权限问题;查看错误消息:

error: failed to push some refs to 'git@devel.site.com:mysite.git' 为了防止您丢失历史记录,非快进更新被拒绝合并远程更改(例如'git pull'),然后再次推送. 有关详细信息,请参阅“git push --help”的“关于快进的说明”部分。

的“关于快进的说明”部分对git push --help问题有很长的解释,但很简短;您要推送的分支不是当前分支的直接祖先,因此远程服务器不会让您推送。您需要修复本地更改(例如git pull,获取丢失的更改,或git rebase将更改重新定位到远程头),或强制远程服务器接受推送--force(后者几乎永远不是正确的举动)

于 2011-08-03T00:24:22.283 回答
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
于 2011-09-13T17:43:01.297 回答