每个工作目录的.git /权限

时间:2011-08-03 00:19:02

标签: git git-push git-pull

每次我推动时都会出现此错误。仅适用于此工作目录。不是在另一个类似的地方,我可以告诉它具有相同的权限。

$ 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似乎也经历了但我仍然得到错误。

有什么想法吗?

3 个答案:

答案 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 pullgit 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