git 无法打开 .git/FETCH_HEAD

Posted

技术标签:

【中文标题】git 无法打开 .git/FETCH_HEAD【英文标题】:git cannot open .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 config core.sharedRepository true(在服务器上,在.git repos中)+serverfault.com/a/27040/783中的chmod吗? 您在联系遥控器时使用什么协议? HTTPS? ssh? ssh 表示没有登录名/密码,只有公钥和私钥存储在~/.ssh/(id_rsa.pub, id_rsa) 只要你一直使用“登录”和“密码”,你的 ssh url 就不起作用。 这能回答你的问题吗? Trying to git pull with error: cannot open .git/FETCH_HEAD: Permission denied 【参考方案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。

【讨论】:

以上是关于git 无法打开 .git/FETCH_HEAD的主要内容,如果未能解决你的问题,请参考以下文章

解决win10 报错 git pull error: cannot open .git/FETCH_HEAD: Permission denied

Mac OSX系统homebrew update Fetching failed问题解决方案

idea输入git命令无反应

git修改密码后无法拉取提交代码

如何解决:“无法打开 'git-upload-pack'” Eclipse 中的错误?

git产生Gtk-WARNING:无法打开显示