直接从 repo 编辑时推送到 git 时是否存在权限 / 所有者问题?

直接从 repo 编辑时推送到 git 时是否存在权限 / 所有者问题?

我有一个 Web 界面,用于将脚本从 Github 上的 repo 部署到我们的实时服务器。Web 界面仅使用一些 git 命令触发 bash 脚本。如果我在本地进行更改,推送到 repo,然后运行 ​​bash 脚本从 repo 拉取到实时服务器,它就可以正常工作。但是,如果我直接在 repo 中进行更改(通过 Github 的 Web 界面),我会遇到快进/锁定问题。

以下是我正在采取的步骤:

  1. 在 Github repo 上对文件进行更改
  2. 通过 Web 从尝试 git push/pull 的实时服务器运行 bash 脚本(作为 apache)。出现以下问题:

    PUSH
    To [email protected]:name/name.git
    ! [rejected]        master -> master (non-fast-forward)
    error: failed to push some refs to '[email protected]:name/name.git'
    To prevent you from losing history, non-fast-forward updates were rejected
    Merge the remote changes before pushing again.  See the 'Note about
    fast-forwards' section of 'git push --help' for details.
    
    PULL
    From github.com:name/name
    branch            master     -> FETCH_HEAD
    error: unable to unlink old 'includes/footer.inc' (Permission denied)
    Updating 8f6d922..d1eba9d
    Updating 8f6d922..d1eba9d
    
  3. 以 root 身份通过 SSH 登录,尝试推送/拉取,一切正常。

关于为什么此方法对 Apache 不起作用的想法?

答案1

root因为存储库本地副本中的文件不属于 Web 服务器用户。鉴于您已pushed 并pulled as ,至少其中一些文件可能属于root

chown -R是你的朋友。

答案2

推送失败是因为您的历史记录有分歧。您需要将本地存储库中的更改合并到当前远程分支,然后将结果推送到 Github。请参阅普罗吉特了解该行动的详细情况。

拉取失败是因为,正如 Mo 所说,您遇到了权限问题。

相关内容