【问题标题】:Permissions for .git/ for each working directory每个工作目录的 .git/ 权限
【发布时间】:2011-10-18 17:12:38
【问题描述】:

每次 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 似乎也通过了,但我仍然得到错误。

有什么想法吗?

【问题讨论】:

    标签: git git-push git-pull


    【解决方案1】:

    如果这仍然是一个问题,如果您执行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
    

    【讨论】:

      【解决方案2】:

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

      错误:未能将一些引用推送到 'git@devel.site.com:mysite.git' 为防止您丢失历史记录,拒绝了非快进更新 在再次推送之前合并远程更改(例如“git pull”)。见 'git push --help' 的 'Note about fast-forwards' 部分了解详细信息。

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

      【讨论】:

      • 我可以成功运行git pull。运行 git push 时仍然出现错误,以及 git push 成功通过。我现在将研究 git rebase。
      • 我在阅读文档时迷路了。我运行 git rebase redesign。我得到当前分支是最新的。
      • @win 不要只是随机变基,这只是一个建议。你需要找出为什么你当前的分支没有连接到远程头并修复它;您可以尝试阅读 git loggit gui 以获取存储库的图形视图
      【解决方案3】:

      咳咳

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

      这对我来说确实看起来是权限问题。

      【讨论】:

      • 我可以成功运行git pull。运行 git push 时仍然出现错误,以及 git push 成功通过。
      猜你喜欢
      • 2012-06-27
      • 1970-01-01
      • 2011-11-03
      • 2020-11-04
      • 2011-09-12
      • 2016-08-12
      • 2015-08-19
      • 2017-01-17
      • 1970-01-01
      相关资源
      最近更新 更多