【问题标题】:git cannot open .git/FETCH_HEADgit 无法打开 .git/FETCH_HEAD
【发布时间】:2015-05-18 08:10:31
【问题描述】:

我有 CentO。我制作了 git 并制作了所有者的 .git 文件夹组“gitdevelopers”。在“gitdevelopers”组中添加 User1 和 User2。现在我从 user1 和 user2 进行 git-push 和 git-pull 更改。但是您计算机中的用户无法正常工作:

git.exe pull -v --no-rebase --progress "origin" 错误:无法打开 .git/FETCH_HEAD:权限被拒绝

为什么?

p.s.:我可以通过 x-shell 使用登录密码 user1 和 user2 连接到服务器。

几小时后:: 我认为登录密码不正确的问题,git记住了。

p.p.s: git 在哪里保存登录密码对?我使用 ssh 协议。

p.p.p.s.:好的。我有带有 git 的服务器 CentO。服务器上有两个用户。我在 Windows 上使用 TortoiseGit。我这样配置:在每个连接系统中,都要求连接到服务器的登录名和密码。现在我想知道:1. 这个登录密码保存在哪里 2. 我可以永久保存这对吗?

【问题讨论】:

标签: git github permissions centos


【解决方案1】:

删除现有解决方案并执行 git clone 解决了我的问题

【讨论】:

    【解决方案2】:

    这对我有用:

    sudo chown -R $ USER: name_repo
    

    注意: 在我的情况下,我已经使用 root 用户克隆了存储库,然后我开始使用另一个用户

    【讨论】:

      【解决方案3】:

      生成新的 SSH 密钥对

      ssh-keygen -o -t rsa -b 4096 -C "email@domain.com"
      

      向您的 GitLab 帐户添加 SSH 密钥

      Copy your public SSH key to the clipboard and paste it into your user account >  SSH Keys 
      

      对于身份验证,您需要在 ~/.ssh/config 中将配置设置为以下内容;

      Host domain.com
      
      Hostname domain.com
      
      User git
      
      Port 30001
      
      Preferredauthentications publickey
      
      RequestTTY no
      
      IdentityFile ~/.ssh/id_rsa
      

      您可以将命令用作; 在这些命令中提到的公共变量中,替换那些相关的值。

      创建一个新的存储库

      git clone ssh://git@domain.com:port-number/user-name/project-name.git
      
      cd project-name
      
      touch README.md
      
      git add README.md
      
      git commit -m "add README"
      
      git push -u origin master
      

      推送现有文件夹

      cd existing_folder
      
      git init
      
      git remote add origin ssh://git@domain.com:port-number/user-name/project-name.git
      
      git add .
      
      git commit -m "Initial commit"
      
      git push -u origin master
      

      推送现有的 Git 存储库

      cd existing_repo
      
      git remote rename origin old-origin
      
      git remote add origin ssh://git@domain.com:port-number/user-name/project-name.git
      
      git push -u origin --all
      
      git push -u origin --tags
      

      克隆存储库:

      git 克隆https://git@domain.com:port-number/user-name/project-name.git

      【讨论】:

        【解决方案4】:

        这对我有用

        sudo chown -R $(whoami) .git/
        

        【讨论】:

        • 效果很好。你能解释一下它背后的逻辑吗?
        • sudo chown=更改目录的所有权,-R=使其递归,该目录内所有子文件夹和文件的含义,$(whoami)=获取当前登录用户,.git/=is git存储库信息所在的文件夹,因此该命令会将文件的所有权更改为当前用户,因此该用户可以执行“git pull”等命令。
        【解决方案5】:

        如果您使用的是 ubuntu,请先使用 sudo 关键字。

        sudo git pull
        

        如果您使用的是 Windows,请使用管理员模式

        【讨论】:

          【解决方案6】:

          您可以检查文件的权限,

          ls -l /usr/local/Library/Taps/linode/cli/.git/FETCH_HEAD

          ls -l /usr/local/.git/FETCH_HEAD

          【讨论】:

            【解决方案7】:
            error: cannot open .git/FETCH_HEAD: Permission denied
            

            这是我遇到的第一个错误。

            也许您已经知道,但这可能是因为没有更改/查看该目录的权限。

            这个想法是改变权限,也许使用:

            chmod
            

            chown
            

            我在这里找到了更多答案Trying to git pull with error: cannot open .git/FETCH_HEAD: Permission denied

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-11-29
              • 2012-10-23
              • 2016-11-15
              • 2014-01-04
              • 2012-08-21
              • 2013-02-08
              • 2015-01-11
              • 2016-02-20
              相关资源
              最近更新 更多