(一)仓库创建与配置 - git config 命令的使用
设置用户信息、编辑器、别名、仓库行为等。
文章目录
1. 命令概述
git config 命令主要用于获取和设置 Git 的配置变量。这些变量可以控制 Git 的外观和行为的方方面面,比如用户信息、编辑器偏好、差异比较工具、远程仓库设置等。
Git 的配置存储在三个不同的位置(作用域),它们具有优先级:
1.本地配置(--local):默认级别。配置信息存储在当前项目的 .git/config 文件中。此配置仅对当前仓库有效,优先级最高。
2.全局配置(--global):配置信息存储在用户家目录下的 ~/.gitconfig(Linux/macOS)或 C:\Users\<用户名>\.gitconfig(Windows)文件中。此配置对当前用户的所有仓库有效。
3.系统配置(--system):配置信息存储在系统级文件中,如 /etc/gitconfig(Linux/macOS)或 Git 安装目录下的 etc/gitconfig(Windows)。此配置对所有用户的所有仓库有效,优先级最低。
优先级顺序:本地 > 全局 > 系统。高优先级的配置会覆盖低优先级的配置。
2. 命令格式
基本的命令格式如下:
git config [<scope>] [<options>] <key> [<value>]
[<scope>]:可选的作用域,如--local,--global,--system。如果省略,默认为--local。[<options>]:可选的操作选项,如--list,--edit,--unset等。<key>:要操作的配置变量名称。[<value>]:可选,要为配置变量设置的值。
3. 基本用法
3.1 设置配置
这是最常用的功能,例如设置提交代码时使用的作者信息。
# 设置全局用户名和邮箱(推荐第一步就做)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 设置当前仓库的特定用户名(比如为公司项目单独设置)
git config --local user.name "Your Company Name"
3.2 查看配置
# 列出当前生效的所有配置(会合并显示系统、全局、本地的配置)
git config --list
# 列出指定作用域的所有配置
git config --global --list
git config --local --list
# 查看某个特定配置项的值
git config user.name
git config --global user.email
3.3 编辑配置
你可以直接打开配置文件进行编辑,这对于批量修改或复杂配置很方便。
# 编辑全局配置文件
git config --global --edit
# 编辑当前仓库的配置文件
git config --local --edit
3.4 删除配置
如果你想移除某个配置项,可以使用 --unset 选项。
# 删除当前仓库的用户名配置
git config --unset user.name
# 删除全局的某个配置
git config --global --unset http.proxy
4.高级用法
4.1 配置别名
别名是 git config 最强大的功能之一,它可以为长命令或常用命令组合创建简短的别名,极大提升效率。
# 将 `git checkout` 简化为 `git co`
git config --global alias.co checkout
# 创建一个单行日志图的别名,非常美观
git config --global alias.lg "log --oneline --graph --decorate --all"
# 创建一个显示最近一次提交的别名
git config --global alias.last "log -1 HEAD"
# 使用别名!现在你可以输入:
git co main # 等同于 git checkout main
git lg # 查看漂亮的提交图
git last # 查看最新的一次提交
4.2 配置默认文本编辑器
当 Git 需要你输入信息时(比如提交时的注释),它会启动一个文本编辑器。
# 设置 VSCode 为默认编辑器
git config --global core.editor "code --wait"
# 设置 Vim 为默认编辑器
git config --global core.editor "vim"
# 设置 Nano 为默认编辑器
git config --global core.editor "nano"
4.3 处理行结束符
在跨平台(Windows/macOS/Linux)协作时,行结束符是一个常见问题。Git 可以自动处理。
# 对于 Windows 用户:检出时转换为 CRLF,提交时转换为 LF
git config --global core.autocrlf true
# 对于 Linux/macOS 用户:检出时不转换,提交时转换为 LF
git config --global core.autocrlf input
# 如果你确信所有参与者都使用 Unix/Linux,可以直接关闭转换
git config --global core.autocrlf false
4.4 配置差异比较与合并工具
你可以配置外部工具来替代 Git 自带的 diff 和 merge。
# 设置 Beyond Compare 为差异比较和合并工具 (示例路径,请根据实际安装路径修改)
git config --global diff.tool bc
git config --global difftool.bc.path "/usr/local/bin/bcomp"
git config --global merge.tool bc
git config --global mergetool.bc.path "/usr/local/bin/bcomp"
# 使用 difftool 代替 diff
git difftool HEAD~1 HEAD
4.5 忽略文件大小写
在 Windows 和 macOS 上,文件系统默认是大小写不敏感的,这可能导致问题。可以强制 Git 区分大小写。
git config core.ignorecase false
4.6 优化仓库性能(适用于大仓库)
# 启用提交图(Commit Graph)来加速 `git log` 等操作
git config core.commitGraph true
# 定期运行 `git gc` 来优化仓库
git config --global gc.auto 256
# 使用一个.git的大项目,如果输入git status 或 git pull有时候会很慢,特别是第一次,可以使用下列命令来优化
git config --global core.checkStat minimal
5. 注意事项
5.1 优先级陷阱
记住配置的优先级。如果你在本地仓库设置了 user.email,它将覆盖全局设置。当你发现提交者信息不对时,首先检查 git config --list 中生效的是哪个配置。
5.2 谨慎使用 --system
修改系统配置通常需要管理员权限,并且会影响机器上的所有用户,在个人开发环境中很少使用。
5.3 配置中的路径
在配置外部工具(如 difftool)的路径时,请确保路径是正确的,并且使用了适合你操作系统的路径格式。
5.4 别名冲突
不要将别名设置为 Git 已有的命令名,否则会覆盖原命令。
5.5 备份配置
你的全局 Git 配置文件(~/.gitconfig)是纯文本文件,可以将其备份到云端,以便在新机器上快速恢复你的工作环境。
6. 补充信息
6.1 查看所有配置的来源
使用 --show-origin 选项可以查看每个配置项来自哪个文件,这在调试配置冲突时非常有用。
git config --list --show-origin
6.2 条件配置
这是一个非常强大的特性,允许你根据仓库的路径来应用不同的配置。例如,为公司项目和个人项目使用不同的邮箱。
在你的全局配置 ~/.gitconfig 中添加:
# 默认使用个人邮箱
[user]
email = personal@example.com
# 如果仓库路径包含 "/work/",则使用公司邮箱
[includeIf "gitdir:~/work/"]
path = .gitconfig-work
然后创建一个新文件 ~/.gitconfig-work,内容如下:
[user]
email = your.name@company.com
这样,所有在 ~/work/ 目录下的 Git 仓库都会自动使用公司邮箱,而其他仓库则使用个人邮箱。
7. 个人常用的配置
# 自定义日期格式
git config --global alias.lg "log --pretty=format:'%C(magenta)%ad%Creset %C(yellow)%h%Creset %s %C(cyan)<%an>%Creset %C(green)%d%Creset' --date=format:'%Y-%m-%d %H:%M'"
更多推荐
所有评论(0)