git - 使用 GitKraken 克隆存储库时“无法打开 '/etc/gitconfig' - 权限被拒绝”
问题描述
我试图在 Ubuntu 上使用 GitKraken 克隆一个 repo,但它给我一个错误"failed to open '/etc/gitconfig' - permission denied"。
所以我认为 GitKraken 软件需要访问一个 gitconfig 文件才能使事情正常工作,并且它首先尝试访问该/etc/gitconfig
文件(它被锁定 -我什至不知道“锁定”是什么意思),所以它抛出了错误。谷歌搜索后,我发现一个听起来很合理的解决方案是输入chmod 777 /etc/gitconfig
给每个人(包括 GitKraken)读取/写入该配置文件的权限。但是这样做之后,即使重新启动,它仍然无法工作(权限被拒绝)。第一次尝试失败。也许这与许可无关?
然后我一直在谷歌搜索,然后我知道 git 有 3 种类型的配置文件,它们是本地(位于.git/gitconfig
)、全局(位于~/.gitconfig
)和系统(位于/etc/gitconfig
)。然后我想“啊哈,我可以删除/etc/gitconfig
,然后 Kraken 将使用~/.gitconfig
”。然而在删除之后/etc/gitconfig
,它可以工作(我可以按预期克隆我的仓库)。但是我认为这只是一种解决方法,我不知道这样做的后果是什么(删除系统gitconfig)。正如我在文档中阅读的那样,它应该首先读取本地,然后是全局,然后是系统,所以它应该只读取/etc/gitconfig
如果只是在 中找不到~/.gitconfig
,对吗?为什么这里不是这样?还是 GitKraken 故意设置从/etc/gitconfig
第一个而不是上面的顺序读取配置文件?
最后,我删除了系统 gitconfig /etc/gitconfig
(通过将其重命名为/etc/.gitconfig
btw)。我的问题是我现在该怎么办,我的问题解决了吗?如果现在我还不完全理解发生了什么,请有人向我解释一下吗?
提前致谢。
解决方案
您可以git config --show-origin -l
查看所有涉及的配置文件。
/etc/gitconfig 是系统范围的配置文件,总是先读取。
锁定的文件通常意味着另一个进程已经对其进行了处理(通常在 Windows 上,但您可能在 Linux 上)
您可以稍后重新创建它,即使内容很少,也可以查看问题是否仍然存在:
[color]
diff = auto
status = auto
branch = auto
interactive = true
显然,从评论来看,问题在于 GitKraken 的安装方式:
- 来自 Ubuntu 软件
- 代替
gitkraken.com/download
第二种方法会生成一个 GitKraken,它不会被 lock 绊倒/etc/gitconfig
。
推荐阅读
- mongodb - 通过 ID 获取文档时使用 $addFields 动态填充字段
- java - 逐行合并两个文件Java
- javascript - 仅使用 Flask 中的一个 URL 将数据从 Python 发送到 Javascript
- html - 如何在自定义元素中制作自定义表格?
- python-2.7 - 使用 nditer() 从 numpy 1.15.3 遍历所有元素的 3D numpy 数组迭代列表
- postgresql - Wildfly 14 设置 PostgreSQL 数据源 - 致命:数据库“my_user”不存在
- html - 加载数据时的可访问性
- php - 在 XML 文件中使用 HTML 标记并稍后将它们显示/识别为 HTML
- java - SpringBoot 2.0.5 应用程序启动后失败
- c# - WaitForSeconds 逐渐变得不同步... Unity