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问题解决方案