git config实用指南

admin1个月前笔记38

git config介绍

作为现代软件开发中不可或缺的工具之一,Git 不仅提供了强大的版本控制功能,还允许用户根据自己的需求进行个性化配置。其中,git config 命令是我们最常用的管理 Git 配置的工具。

git config的作用域

Git 配置存储了用户和仓库的特定配置项,例如用户名、邮箱、默认编辑器、远程仓库地址等。这些配置信息存储在三个不同的地方,对不同的范围生效:

  • 系统级别配置-system:适用于整个系统的配置,这个很少见。通常存储在 /etc/gitconfig 文件中。

  • 全局配置-global:适用于当前用户的配置,我们最常用的配置。通常存储在 ~/.gitconfig 文件中。

  • 仓库级别配置-local:适用于当前 Git 仓库的配置,每个项目的仓库中都有一个。通常存储在仓库的 .git/config 文件中。

以上三个配置优先级:仓库级 > 全局 > 系统级

git config常用配置项

  1. user.name:这个配置项设置了提交代码时使用的用户名,它将被包含在每个提交记录中,以标识谁做了哪些更改。

  2. user.email:这个配置项设置了提交代码时使用的邮箱地址,用来与用户名一起标识提交者的身份。

  3. core.editor:设置默认的文本编辑器。当需要编辑提交消息或解决合并冲突时,Git 会自动调用这个编辑器。默认是nano,也可以设置为vim、gedit、notepad++、vscode等,nano我用起来不太习惯,vim、vscode都还可以

  4. core.ignorecase:控制文件名在 Git 中的大小写敏感性。默认是False,如果设置为 true,Git 将会忽略文件名的大小写差异。

  5. color.ui:启用或禁用 Git 输出的彩色显示,使得在终端中更易于区分不同部分。默认是False,通过设置 color.ui 为 true,就可以启用全局的 Git 控制台颜色,同时也支持自定义 Git 控制台的颜色方案。

  6. alias.:通过设置别名,你可以为常用的 Git 命令创建简短的快捷方式,从而提高工作效率。默认没有,类似linux的alias

  7. http.proxy:当需要通过代理服务器访问远程仓库时,可以使用此配置项指定 HTTP 代理。默认没有,这个貌似比较适合挂外网和公司的梯子,不过我没用过。

  8. http.postBuffer:缓存区大小,如果文件过大rpc失败可以调大此配置。默认是1 MB,根本不够用的,推荐设置成1048576000,1个G

  9. http.sslVerify:控制是否验证远程仓库的 SSL 证书。在一些情况下,可能默认是true,必要情况下需要禁用 SSL 验证也可以设置成false,但这会增加安全风险。

  10. push.default:设置推送行为,默认情况下,它确定了在不指定分支名称时 Git 应该推送的分支。

  11. credential.helper:用于设置 Git 如何存储和检索认证信息,例如用户名和密码,以便于在与远程仓库通信时使用。默认NONE,可设置cache, storeosxkeychai

  12. fetch.prune:设置是否在拉取远程分支时删除本地不存在的远程分支。默认false

  13. diff.tool:设置默认的文件差异比较工具,用于比较文件之间的差异。

  14. merge.tool:类似于 diff.tool,这个配置项设置了默认的合并工具,用于解决代码合并时的冲突。

  15. remote.origin.url:设置远程仓库的 URL,用于指定与之通信的远程地址。

  16. remote.origin.fetch:设置从远程仓库拉取的默认分支。

  17. init.defaultBranch:设置新建仓库时的默认分支名称。

  18. gc.auto:设置自动垃圾回收的触发条件。

  19. rerere.enabled:启用或禁用 Git 中的 Rerere 功能,它可以帮助自动重用先前解决的合并冲突。

以下是global和local的默认配置:

image.png


git config的操作指令

git config 命令是 Git 中用来配置参数的主要工具。通过它,你可以在全局、当前用户、或者当前仓库级别设置各种配置项。以下是一些常见的 git config 命令行操作示例:

  1. 查看当前配置

要查看当前 Git 配置的所有项及其对应的值,可以使用 --list-l参数。仅查看,不可编辑。对于nano编辑器,单击q可退出

查看默认配置,目录在哪里就显示哪里的配置。

git config --list

查看系统配置

git config --system --list

查看全局配置

git config --global --list

查看本地配置

git config --local --list

  1. 查看特定配置项

如果只想查看特定的配置项,可以直接指定它的名称进行查看:

git config user.name

  1. 设置配置项

也可以直接制定名称设置 Git 配置:

git config --global user.name "Your Name" git config --global user.email "[email protected]"

  1. 清除配置项

如果想清除某个配置项的值:

git config --unset user.name

  1. 编辑配置项

git config --local -e

常见的缓存区限制问题

事情的起因是我想要将一个接近800MB的数据上传的gitee的仓库中,但是报错如下:

sh复制代码error: RPC failed; curl 56 Recv failure: Connection reset by peer fetch-pack:  unexpected disconnect while reading sideband packet fatal: early EOF fatal:  fetch-pack: invalid index-pack output

"error: RPC failed; curl 56 Recv failure" 是一个常见的 Git 错误消息,通常表明 Git 在与远程仓库通信时发生了问题。这个错误的原因可能有很多,一般导致这个错误的原因就是以下几种:

  1. 网络问题:这是最常见的原因之一。可能是网络连接不稳定或者与远程仓库之间存在防火墙或代理问题。

  2. 远程服务器问题:远程仓库服务器可能存在问题,导致无法完成通信。在这种情况下,只能等待远程服务器恢复正常。

  3. SSL证书问题:可能是由于 SSL 证书的问题,导致无法建立安全连接。尝试在 Git 命令中使用 -c http.sslVerify=false 参数来禁用 SSL 验证,以查看问题是否与证书有关。

  4. 文件大小限制:可能是由于 Git 客户端或服务器配置了文件大小限制,导致无法传输大文件。可以尝试增加 Git 客户端的缓冲区大小。

根据我的排查,我在做小的变动时和这个仓库连接都没有问题,所以只可能是缓存区太小,不能传输过大的数据。 同样的,git clone代码时,如果项目总大小比较小时克隆代码没问题,占用内存比较大时就会如上报错。

git config --global http.postBuffer

通过命令查看到当前缓存区过小 

git config --global http.postBuffer 1048576000

image.png

此时再进行git push即可成功。


相关文章

学习如何使用 Git 来压扁、变基和精选

学习如何使用 Git 来压扁、变基和精选

当我与别人谈到 Git 时,几乎每个人都对 git rebase 命令 有强烈的印象,这个命令让许多人遇到了问题,而不得不更改目录、删除仓库、然后再重新克隆一个仓库。我认为这是因为...

解析Java 内存模型—— JMM

解析Java 内存模型—— JMM

JMM简介Java Memory Model简称JMM, 是一系列的Java虚拟机平台对开发者提供的多线程环境下的内存可见性、是否可以重排序等问题的无关具体平台的统一的保证。(可能在术语上与Java运...

前后端分离架构:Web 实现前后端分离,前后端解耦

前后端分离架构:Web 实现前后端分离,前后端解耦

前后端分离已经成为了行业的主流,大流量时代,微服务的出现,让前后端分离发展更是迅速,前端框架vue.js、angura.js的迅速发展,也让前后端分离趋势加快。一、前言” 前后端分离 “已经成为互联网...

如何在 MariaDB 中配置主从复制

如何在 MariaDB 服务器上配置一个主从复制。复制是用于为我们的数据库创建多个副本,这些副本可以在其它数据库上用于运行查询,像一些非常繁重的查询可能会影响主数据库服务器的性能,或者我们可以使用它来...

OpenAI 推出超神 ChatGPT 注册攻略来了

OpenAI 推出超神 ChatGPT 注册攻略来了

前几天,OpenAI 推出超神 ChatGPT,非常火爆。但是呢,因为不可抗力原因,大部分人无法体验到。这里我分享一下注册的攻略。准备首先能能访问 Google(前置条件,不能明确说,懂得都懂)你得有...

不会 find 命令这七种用法!你算啥运维人

对于技术面试,它也是一个热门话题。让我们看一道真题:如果你的 Linux 服务器上有一个名为 logs 的目录,如何删除该目录下最后一次访问时间超过一年的日志文件呢?🤔这种情况很常见,但令人惊讶的是,...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。