Git Bash 实战操作全解析:从初始化到版本管理的每一步细节
在学习 Git 时,光看理论不如动手实操。本文将逐行解析一份真实的 Git Bash 操作记录,从仓库初始化到版本回退、文件删除,带你吃透每一个命令的作用、背后的原理以及可能遇到的问题。无论你是 Git 新手还是想巩固基础的开发者,这份 “操作说明书” 都能帮你理清思路。
一、环境准备:什么是 Git Bash?
Git Bash 是 Windows 系统下的 Git 命令行工具,模拟了 Linux 终端的操作环境,支持大多数 Git 命令和 Linux 基础命令(如cd
、mkdir
、vim
)。本文的所有操作均在 Git Bash 中完成,如果你用的是 Linux/Mac 终端,命令完全通用。
分布式版本控制系统( Distributed Version Control System,简称 DVCS )会把服务器上的代码仓库完整地镜像下来。这样每个人的电脑上都有一份完成的服务器代码仓库的镜像,任何一处协同工作用的服务器发生故障,事后都可以用个人的电脑上的镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份(见下图2)。我们可以看到电脑A与电脑B与服务器上的版本内容完全一致
Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异。这类系统(CVS,Subversion,Perforce,Bazaar 等等)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容,请看下图。
其他系统在每个版本中记录着各个文件的具体差异
Git 并不保存这些前后变化的差异数据。实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。Git 的工作方式就像图 4 所示。
Git 保存每次更新时的文件快照
Git的安装
Git支持Linux、Windows和Mac系统,安装Git,可以到Git官方网站直接下载安装程序。
Git仓库的基本概念和流程
什么是版本库?版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。
-
- git仓库的基本概念
- 远程仓库(Remote):
也叫作资源库,是远程机器上的代码库,用于做不同版本库文件交换更新。如Gitlab,GitHub,gitee。
- 本地库(Repository):
是用户在本地创建的目录,拥有远程库的一个快照,由工作区和版本库构成。
- 工作区(Workspace):
本地库的根目录中除.git目录以外的内容,存储内容的实际文件。
- 暂存区(stage/Index):
也叫做缓存区,暂存信息存放在.git目录"下的index文件(.git/index)中,用于临时保存内容的修改;
- 版本库(.git目录)
是本地库的根目录中的一个隐藏目录.git,用于记录版本信息,Git进行版本控制所需要的文件,则都放在.git文件夹中;
- 分支(Branch):
本地库中默认创建一个主(master)分支,分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
本地库和远程库的关系
开发人员通过Git命令来管理代码,最常用的6个命令如下图所示:
git仓库的工作流程
从一般开发者的角度来看,使用Git的工作流程是:
- 克隆远程库:从远程库上克隆完整的Git仓库(包括代码和版本信息)到本地;
- 在本地库上修改代码:在本地库上根据不同的开发目的,创建分支,修改代码;
- 提交到分支:在本地分支上提交代码;
- 把修改合并到本地主分支:在本地库上提交更新,也就是说,把修改合并到本地主分支;
- 把远程库合并到本地主分支:把远程库上的最新代码fetch下来,跟本地主分支合并,如果存在冲突,那么解决冲突。
- 把本地主分支提交到远程库:生成补丁(patch),把补丁发送给远程库。
二、操作解析:从 0 开始的 Git 仓库管理
步骤 1:创建并进入项目目录(工作区初始化)
DELL@DESKTOP-U4905V0 MINGW64 /d
$ mkdir gitTest && cd gitTest
操作目的:
创建一个名为gitTest
的文件夹作为项目目录(即 Git 的 “工作区”),并进入该目录。
背景知识:
工作区是我们编写代码的地方,所有可见的文件 / 文件夹都在这里。后续的 Git 操作都需要在工作区目录下执行。
步骤 2:初始化 Git 仓库(本地仓库创建)
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest
$ git init
Initialized empty Git repository in D:/gitTest/.git/
操作目的:
通过git init
命令将gitTest
目录初始化为 Git 仓库。
执行结果:
目录下生成一个隐藏的.git
文件夹(可通过ls -a
查看),这是 Git 的 “本地仓库” 核心目录,存储了所有版本记录、分支信息、配置等关键数据。
注意:
.git
目录是 Git 的 “大脑”,绝对不要手动修改或删除里面的文件,否则可能导致仓库损坏。
步骤 3:查看本地仓库的核心文件
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest
$ cd .gitDELL@DESKTOP-U4905V0 MINGW64 /d/gitTest/.git (GIT_DIR!)
$ ls
HEAD config description hooks/ info/ objects/ refs/DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest/.git (GIT_DIR!)
$ ll
total 7
-rw-r--r-- 1 DELL 197121 23 Jul 15 16:24 HEAD
-rw-r--r-- 1 DELL 197121 130 Jul 15 16:24 config
-rw-r--r-- 1 DELL 197121 73 Jul 15 16:24 description
drwxr-xr-x 1 DELL 197121 0 Jul 15 16:24 hooks/
drwxr-xr-x 1 DELL 197121 0 Jul 15 16:24 info/
drwxr-xr-x 1 DELL 197121 0 Jul 15 16:24 objects/
drwxr-xr-x 1 DELL 197121 0 Jul 15 16:24 refs/
操作目的:
进入.git
目录,查看 Git 仓库的核心文件。
文件说明:
HEAD
:指向当前所在的分支(默认是master
分支)。config
:仓库的配置文件(如用户信息、远程仓库地址)。objects/
:存储所有文件的快照(版本数据)。refs/
:存储分支和标签的指针(指向具体的版本)。hooks/
:存放钩子脚本(如提交前自动检查代码的脚本)。
注意:
.git
目录是 Git 自动管理的,手动修改可能导致仓库损坏,看完后建议通过cd ..
回到工作区。
步骤 4:创建第一个文件并查看状态
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ vim Hello.java
操作目的:
用vim
编辑器创建一个Hello.java
文件(Java 代码示例)。
// Hello.java内容
public class Hello{public static void main(String[] args){System.out.println("hello world");}
}
保存退出后,查看文件状态:
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git status
On branch master
No commits yet
Untracked files:(use "git add <file>..." to include in what will be committed)Hello.java
nothing added to commit but untracked files present (use "git add" to track)
操作目的:
用git status
查看工作区文件的状态。
结果解析:
Untracked files
(未跟踪文件):Hello.java
存在于工作区,但未被 Git 纳入管理(Git 不知道它的存在)。- 提示
use "git add <file>..."
:告诉我们需要通过git add
命令将文件加入暂存区。
步骤 5:将文件添加到暂存区
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git add .
warning: in the working copy of 'Hello.java', LF will be replaced by CRLF the next time Git touches it
操作目的:
用git add .
将工作区所有未跟踪的文件添加到暂存区(.(点)
表示当前目录下所有文件)。
警告说明:
LF will be replaced by CRLF
是 Windows 系统特有的换行符警告:
- Linux/Mac 使用
LF
(\n)作为换行符,Windows 使用CRLF
(\r\n)。 - Git 默认会在提交时将
LF
转换为CRLF
,检出时再转回LF
,避免跨平台协作时的换行符冲突。 - 该警告不影响功能,可忽略(若想关闭,可配置
git config --global core.autocrlf false
)。
添加后再次查看状态:
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git status
On branch master
No commits yet
Changes to be committed:(use "git rm --cached <file>..." to unstage)new file: Hello.java
结果解析:
Changes to be committed
(待提交的变更):Hello.java
已从工作区进入暂存区,等待被提交到本地仓库。- 提示
use "git rm --cached <file>..."
:若想将文件从暂存区撤回工作区,可执行该命令。
步骤 6:提交文件到本地仓库
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git commit -m ”yby第一次上传“
[master (root-commit) 993e445] ”yby第一次上传“1 file changed, 7 insertions(+)create mode 100644 Hello.java
操作目的:
用git commit -m "注释"
将暂存区的文件提交到本地仓库。
参数说明:
-m
:指定提交注释(必须填写,用于描述本次提交的内容,如 “初始化 Hello.java”)。(root-commit)
:表示这是仓库的第一次提交(根提交),生成了第一个版本。993e445
:本次提交的版本号(哈希值,唯一标识该版本)。1 file changed, 7 insertions(+)
:提交了 1 个文件,新增 7 行内容。
提交后查看状态:
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git status
On branch master
nothing to commit, working tree clean
结果解析:
working tree clean
表示工作区和暂存区都没有未提交的变更,当前状态 “干净”。
步骤 7:配置用户信息(首次提交前必做)
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git config --global -l
user.name=yby6666
user.email=3373746802@qq.com
...
操作目的:
用git config --global -l
查看全局配置(-l
是--list
的缩写)。
为什么需要配置?:
Git 每次提交都需要记录作者信息(用于多人协作时区分是谁提交的),首次使用需配置:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
--global
表示全局配置(所有仓库生效),若只想配置当前仓库,去掉--global
即可。
步骤 8:批量创建文件并管理多个变更
# 创建Test.txt、Test1.txt、Test2.txt、Test3.txt、Test4.txt、Test5.txt
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ vim Test.txt
$ vim Test1.txt
$ vim Test2.txt
$ vim Test3.txt
$ vim Test4.txt
$ vim Test5.txt
创建后查看状态:
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git status
On branch master
Untracked files:(use "git add <file>..." to include in what will be committed)Test.txtTest1.txtTest2.txtTest3.txtTest4.txtTest5.txt
场景说明:
实际开发中经常需要同时管理多个文件,这里模拟创建 6 个测试文件,演示批量操作。
8.1 部分文件添加到暂存区
# 添加Test.txt到暂存区
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git add Test.txt
warning: in the working copy of 'Test.txt', LF will be replaced by CRLF...# 再添加Test1.txt和Test2.txt
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git add Test1.txt Test2.txt
warning: in the working copy of 'Test1.txt', LF will be replaced by CRLF...
查看状态:
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git status
Changes to be committed:(use "git restore --staged <file>..." to unstage)new file: Test.txtnew file: Test1.txtnew file: Test2.txt
Untracked files:(use "git add <file>..." to include in what will be committed)Test3.txtTest4.txtTest5.txt
解析:
- 已添加的文件(Test.txt、Test1.txt、Test2.txt)在 “待提交” 区。
- 未添加的文件(Test3.txt 等)仍在 “未跟踪” 区。
8.2 剩余文件批量添加到暂存区
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git add . # 添加所有未跟踪的文件
warning: in the working copy of 'Test3.txt', LF will be replaced by CRLF...
查看状态:
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git status
Changes to be committed:(use "git restore --staged <file>..." to unstage)new file: Test.txtnew file: Test1.txtnew file: Test2.txtnew file: Test3.txtnew file: Test4.txtnew file: Test5.txt
技巧:
git add <file1> <file2>
:添加指定的多个文件。git add .
:添加当前目录下所有变更(包括修改、新增文件),但不包括删除的文件。git add -u
:添加所有已跟踪文件的修改(不包括新增文件)。
8.3 从暂存区移除文件
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git rm --cached Test.txt
rm 'Test.txt'
操作目的:
用git rm --cached Test.txt
将Test.txt
从暂存区撤回工作区(--cached
表示只操作暂存区,不删除工作区文件)。
查看状态:
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git status
Changes to be committed:(use "git restore --staged <file>..." to unstage)new file: Test1.txtnew file: Test2.txtnew file: Test3.txtnew file: Test4.txtnew file: Test5.txt
Untracked files:(use "git add <file>..." to include in what will be committed)Test.txt
解析:
Test.txt
从 “待提交” 区回到 “未跟踪” 区,若想重新添加,执行git add Test.txt
即可。
8.4 最终提交所有文件
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git add . # 重新添加Test.txt
$ git commit -m ”yby第一次上传“
[master 34d5f6b] ”yby第一次上传“6 files changed, 6 insertions(+)create mode 100644 Test.txtcreate mode 100644 Test1.txtcreate mode 100644 Test2.txtcreate mode 100644 Test3.txtcreate mode 100644 Test4.txtcreate mode 100644 Test5.txt
注意:
这里提交注释和第一次重复了,实际开发中建议注释清晰区分(如 “添加 6 个测试文件”),方便后续查看历史。
步骤 9:修改文件并提交更新
# 修改Test.txt(如添加一行“yby6666”)
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ vim Test.txt# 查看状态
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git status
On branch master
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified: Test.txt
解析:
modified: Test.txt
表示文件已被修改,但修改只在工作区,未进入暂存区。
提交修改:
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git add .
$ git commit -m ”yby第二传“
[master 98df6bf] ”yby第二传“1 file changed, 1 insertion(+), 1 deletion(-)
解析:
1 insertion(+), 1 deletion(-)
:表示本次修改新增 1 行、删除 1 行(可能是替换了内容)。- 每次提交都会生成一个新的版本号(这里是
98df6bf
),用于标识该版本。
步骤 10:版本回退:回到过去的版本
10.1 查看历史版本
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git log
commit 98df6bf3e41c7b024531269bb3322f61ece18dac (HEAD -> master)
Author: yby6666 <3373746802@qq.com>
Date: Tue Jul 15 16:49:08 2025 +0800”yby第二传“commit 34d5f6b8b4f448f85edb079bc83d6ff92c17ab58
Author: yby6666 <3373746802@qq.com>
Date: Tue Jul 15 16:48:00 2025 +0800”yby第一次上传“commit 993e445fd132feadfb68afd88d733a2c753fddf3
Author: yby6666 <3373746802@qq.com>
Date: Tue Jul 15 16:34:30 2025 +0800”yby第一次上传“
解析:
git log
显示从近到远的提交记录,包含
- 版本号(
98df6bf...
) - 作者(
Author
) - 提交时间(
Date
) - 注释(
”yby第二传“
)
简化输出(只显示版本号和注释):
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git log --pretty=oneline
98df6bf3e41c7b024531269bb3322f61ece18dac (HEAD -> master) ”yby第二传“
34d5f6b8b4f448f85edb079bc83d6ff92c17ab58 ”yby第一次上传“
993e445fd132feadfb68afd88d733a2c753fddf3 ”yby第一次上传“
(HEAD -> master)
表示当前HEAD
指针指向master
分支的98df6bf
版本(最新版本)。
10.2 回退到上一个版本
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git reset --hard HEAD^
HEAD is now at 34d5f6b ”yby第一次上传“
解析:
git reset --hard
:强制回退版本(--hard
表示工作区、暂存区、本地仓库的内容都同步到目标版本)。HEAD^
:HEAD
是当前版本的指针,HEAD^
表示上一个版本,HEAD^^
表示上上个版本,HEAD~100
表示上 100 个版本。
回退后查看Test.txt
内容:
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ cat Test.txt
yby6666 # 此时内容是第一次提交后的状态,最新修改已被回退
10.3 回退到指定版本
bash
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git reset --hard 993e44
HEAD is now at 993e445 ”yby第一次上传“
解析:
通过版本号的前几位(993e44
)回退到初始版本(只需输入能唯一标识版本的前几位即可,不用输完整哈希值)。
回退后查看文件列表:
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ ll -a
total 21
drwxr-xr-x 1 DELL 197121 0 Jul 15 17:00 ./
drwxr-xr-x 1 DELL 197121 0 Jul 15 16:26 ../
drwxr-xr-x 1 DELL 197121 0 Jul 15 17:00 .git/
-rw-r--r-- 1 DELL 197121 105 Jul 15 16:31 Hello.java
此时Test.txt
等文件已消失,因为初始版本中没有这些文件 —— 这就是--hard
的作用:工作区文件会被目标版本的内容覆盖。
10.4 恢复到回退前的新版本
如果回退后想恢复到最新版本,但已记不清版本号,可通过git reflog
查看所有操作记录:
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git reflog
993e445 (HEAD -> master) HEAD@{0}: reset: moving to 993e44
34d5f6b HEAD@{1}: reset: moving to HEAD^
98df6bf HEAD@{2}: commit: ”yby第二传“
34d5f6b HEAD@{3}: commit: ”yby第一次上传“
993e445 (HEAD -> master) HEAD@{4}: commit (initial): ”yby第一次上传“
git reflog
记录了所有分支的操作历史(包括回退、提交、切换分支),这里98df6bf
是回退前的新版本号,执行以下命令恢复:
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git reset --hard 98df6bf
HEAD is now at 98df6bf ”yby第二传“
步骤 11:删除文件与撤销删除
11.1 删除文件并提交
# 删除工作区的Test.txt
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ rm Test.txt# 查看状态
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git status
On branch master
Changes not staged for commit:(use "git add/rm <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)deleted: Test.txt# 将删除操作添加到暂存区
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git rm Test.txt # 等价于git add Test.txt(因为文件已删除)
rm 'Test.txt'# 提交删除
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git commit -m "delete Test.txt"
[master ...] delete Test.txt1 file changed, 0 insertions(+), 0 deletions(-)delete mode 100644 Test.txt
11.2 撤销删除(未提交时)
如果误删了文件,且未提交删除操作,可通过git restore
恢复:
# 若已执行git rm但未commit,先将文件从暂存区撤回工作区
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git reset HEAD Test.txt # 从暂存区撤回工作区
Unstaged changes after reset:
D Test.txt# 恢复文件(从本地仓库的最新版本)
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git restore Test.txt # 等价于git checkout -- Test.txt
解析:
git restore <file>
会从本地仓库的最新版本中复制文件到工作区,覆盖当前的删除 / 修改。
步骤 12:常见错误示例
在操作中难免会输入错误命令,比如:
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git plg
git: 'plg' is not a git command. See 'git --help'.
The most similar command ispull
错误原因:
输入了不存在的命令git plg
(可能是想输入git log
),Git 会提示最相似的命令(pull
),帮助排查错误。
另一个常见错误是提交时使用中文引号:
DELL@DESKTOP-U4905V0 MINGW64 /d/gitTest (master)
$ git commit -m ”Test提交“ # 用了中文的”“而非英文的""
error: pathspec '提交“' did not match any file(s) known to git
解决:提交注释必须用英文引号""
,如git commit -m "Test提交"
。
三、总结:Git 工作流程核心梳理
通过以上操作,我们可以总结出 Git 管理文件的核心流程:
工作区(编写文件) → git add → 暂存区(临时存储) → git commit → 本地仓库(版本记录)
关键命令回顾:
操作场景 | 命令 | 作用 |
---|---|---|
初始化仓库 | git init | 创建本地仓库(生成.git 目录) |
查看状态 | git status | 查看工作区 / 暂存区的文件状态 |
添加到暂存区 | git add <file> 或 git add . | 将工作区文件添加到暂存区 |
提交到本地仓库 | git commit -m "注释" | 将暂存区文件提交到本地仓库 |
查看历史记录 | git log 或 git log --pretty=oneline | 查看提交历史 |
版本回退 | git reset --hard <版本号/HEAD^> | 回退到指定版本 |
查看所有操作记录 | git reflog | 包括已回退的版本,用于恢复新版本 |
撤销工作区修改 | git restore <file> | 从暂存区 / 本地仓库恢复文件 |
从暂存区撤回文件 | git restore --staged <file> | 将文件从暂存区退回工作区 |
Git 的强大之处在于对版本的精准控制和本地操作的高效性。掌握这些基础命令后,你可以进一步学习分支管理(git branch
、git checkout
)、远程仓库协作(git clone
、git push
、git pull
)等高级功能。记住,最好的学习方式是多动手 —— 创建一个测试仓库,反复练习本文的操作,你会对 Git 的理解更加深刻!
Git 配置信息(Config)详解:级别、操作与优先级
Git 的配置系统是其灵活运行的核心,通过git config
命令可自定义 Git 的行为偏好。配置信息按生效范围分为不同级别,且遵循严格的优先级规则。以下是对 Git 配置体系的详细总结:
一、配置级别与对应文件
Git 的配置分为 3 个级别,从高到低分别为:
配置级别 | 生效范围 | 对应配置文件路径 | 说明 |
---|---|---|---|
仓库级别(local) | 仅当前仓库有效 | 当前仓库目录下的 .git/config | 优先级最高,会覆盖用户级和系统级的同名配置 |
用户级别(global) | 当前用户的所有仓库有效 | 用户宿主目录下的 ~/.gitconfig (Linux/Mac)或 C:\Users\用户名\.gitconfig (Windows) | 优先级次之,覆盖系统级配置 |
系统级别(system) | 系统中所有用户及仓库有效 | Git 安装目录下的 /etc/gitconfig (Linux/Mac)或 Git安装路径/etc/gitconfig (Windows) | 优先级最低,对系统内所有用户生效 |
二、配置信息的查看
通过git config
命令配合不同选项,可查看对应级别的配置:
命令 | 作用 |
---|---|
git config --local -l | 查看当前仓库(local)的所有配置 |
git config --global -l | 查看当前用户(global)的所有配置 |
git config --system -l | 查看系统级(system)的所有配置 |
注:
-l
是--list
的缩写,用于列出所有配置项。
三、配置信息的修改
修改配置需使用git config
命令,并指定级别(默认是仓库级)。不建议手动编辑配置文件,避免格式错误导致 Git 异常。
示例:修改用户名和邮箱(最常用配置)
# 修改用户级(global)的用户名
git config --global user.name "你的用户名"# 修改用户级(global)的邮箱
git config --global user.email "你的邮箱"
- 若需修改仓库级配置,将
--global
替换为--local
(仅对当前仓库生效)。 - 若需修改系统级配置,将
--global
替换为--system
(通常需要管理员权限)。
四、配置的优先级规则
Git 加载配置时,会按以下顺序查找并应用配置,后加载的配置会覆盖先加载的同名配置:
系统级(system)→ 用户级(global)→ 仓库级(local)
即:
- 仓库级配置(local)优先级最高,若与用户级 / 系统级配置冲突,以仓库级为准;
- 用户级配置(global)次之,若与系统级配置冲突,以用户级为准;
- 系统级配置(system)优先级最低,仅在没有用户级和仓库级配置时生效。