Git 详细使用教程(命令行版,附命令作用解释)

Git 是目前最流行的分布式版本控制系统,核心作用是跟踪文件变化、管理代码版本,支持多人协作开发,可随时回滚到历史版本,避免代码丢失或冲突。本教程全程使用命令行操作(Windows 用 Git Bash、Mac/Linux 用终端),从基础配置到高级用法,逐一讲解命令作用和实操场景,新手可直接跟着步骤练习。

一、Git 前期准备(必做)

1. 安装 Git

先在本地安装 Git,安装完成后,打开命令行,输入以下命令验证是否安装成功:

Terminal window

1
git --version

命令作用:查看当前 Git 版本,若输出类似git version 2\.43\.0,说明安装成功;若提示“命令不存在”,需重新安装 Git。

2. 初始配置(绑定身份,关键步骤)

Git 每次提交代码时,会记录提交者的身份(用户名和邮箱),用于区分不同开发者,必须配置后才能正常提交代码。

Terminal window

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 配置用户名(建议和 GitHub/GitLab 用户名一致)




git config --global user.name "你的用户名"




# 配置邮箱(建议和 GitHub/GitLab 绑定邮箱一致)




git config --global user.email "你的邮箱地址"

命令作用详解:

  • git config:Git 的配置命令,用于设置 Git 相关参数;
  • \-\-global:全局参数,意味着该配置在当前电脑所有 Git 项目中生效(若只想针对单个项目配置,去掉该参数,进入项目后再执行);
  • user\.name/user\.email:配置提交者的用户名和邮箱,后续所有提交记录都会显示该信息。

验证配置是否成功:

Terminal window

1
git config --list

命令作用:查看当前 Git 的所有配置,若能看到刚才设置的用户名和邮箱,即为配置成功。

二、Git 核心概念(先理解,再操作)

在使用命令前,先明确 3 个核心工作区域,避免操作混乱:

  1. 工作区(Working Directory):就是你本地电脑上的项目文件夹,你直接修改的文件都在这个区域;
  2. 暂存区(Stage/Index):临时存放你修改的文件,相当于“缓存区”,用于确认哪些修改需要提交到版本库;
  3. 版本库(Repository):Git 真正保存版本的地方,存放所有提交记录,可随时回滚到任意历史版本(分为本地版本库和远程版本库,如 GitHub)。

核心流程:工作区修改 → 提交到暂存区 → 提交到本地版本库 → 推送到远程版本库(如 GitHub)。

三、本地仓库操作(最基础,必练)

本地仓库是 Git 操作的基础,无需联网,可独立完成版本管理,适合个人开发或离线工作。

1. 初始化本地仓库(创建新项目)

适用于:新建一个项目,想要用 Git 管理版本(比如本地新建的文件夹,需要变成 Git 仓库)。

Terminal window

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1. 进入你要管理的项目文件夹(先切换到目标路径)




cd 你的项目文件夹路径(如:cd /Users/xxx/Documents/MyProject)




# 2. 初始化 Git 仓库




git init

命令作用详解:

  • cd:切换目录命令,用于进入你要操作的项目文件夹(若路径错误,会提示“没有该文件或目录”);
  • git init:初始化 Git 仓库,执行后会在项目文件夹中生成一个隐藏的 \.git 文件夹(该文件夹是 Git 版本库的核心,不要删除),此时项目就被 Git 管理起来了。

注意:每个项目只需初始化一次,初始化后,该文件夹就是 Git 仓库了。

2. 查看工作区状态(高频命令)

无论做什么操作,建议先查看工作区状态,确认当前文件的修改情况,避免误操作。

Terminal window

1
git status

命令作用:查看工作区、暂存区的文件状态,常见输出场景:

  • 未修改:提示 nothing to commit, working tree clean(工作区干净,没有任何修改);
  • 已修改但未提交到暂存区:文件名称显示为 modified(红色);
  • 已提交到暂存区但未提交到版本库:文件名称显示为 staged(绿色)。

3. 将修改的文件提交到暂存区

适用于:你在工作区修改了文件(如新增、修改、删除文件),需要先提交到暂存区,再准备提交到版本库。

Terminal window收起

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 方式1:提交所有修改的文件(最常用)




git add .





# 方式2:提交指定文件(适用于只提交部分修改)




git add 文件名(如:git add index.html)





# 方式3:提交指定文件夹下的所有文件




git add 文件夹名(如:git add src/)

收起

命令作用详解:

  • git add:将工作区的修改“暂存”起来,告诉 Git“这些修改我要提交到版本库,请先记录下来”;
  • \.:表示当前目录下所有修改的文件(包括新增、修改、删除),简化操作,无需逐个指定文件;
  • 提交后,再执行git status,会看到文件变成绿色,提示“changes to be committed”(暂存区有等待提交的内容)。

4. 将暂存区的文件提交到本地版本库

这是 Git 版本管理的核心步骤,提交后,修改会被永久保存到本地版本库,生成一条新的版本记录。

Terminal window

1
git commit -m "提交说明"

命令作用详解:

  • git commit:将暂存区的内容提交到本地版本库,完成一次版本更新;
  • \-m \&\#34;提交说明\&\#34;:必填参数,用于描述本次提交的内容(如“新增登录页面”“修复首页轮播bug”),建议说明清晰,方便后续查看历史记录时,快速知道该版本做了什么修改;
  • 提交成功后,会提示类似 1 file changed, 2 insertions\(\+\) 的信息,表示“1个文件被修改,新增了2行内容”。

注意:必须先执行 git add,再执行 git commit,否则会提示“没有可提交的内容”。

5. 查看提交历史记录

适用于:查看之前的提交记录,包括提交者、提交时间、提交说明、版本号(用于回滚版本)。

Terminal window收起

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 方式1:查看完整历史记录(详细)




git log




# 方式2:查看简洁历史记录(只显示版本号和提交说明,推荐)




git log --oneline




# 方式3:查看所有提交记录(包括回滚的记录)




git reflog

收起

命令作用详解:

  • git log:显示所有提交记录,每条记录包含版本号(40位哈希值)、提交者、提交时间、提交说明;
  • \-\-oneline:简化输出,每条记录只显示前7位版本号和提交说明,更易查看;
  • git reflog:比 git log 更全面,会记录所有操作(包括回滚、撤销提交),常用于找回误删的版本。

6. 版本回滚(恢复到历史版本)

适用于:修改出错、代码丢失,需要恢复到之前的某个稳定版本(核心操作,务必掌握)。

Terminal window收起

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 第一步:查看历史版本,获取要回滚的版本号(前7位即可)




git log --oneline



# 第二步:回滚到指定版本(两种常用方式)




# 方式1:彻底回滚,删除回滚版本之后的所有提交记录(谨慎使用,适合个人开发)




git reset --hard 版本号(如:git reset --hard a1b2c3d)



# 方式2:安全回滚,保留回滚版本之后的修改(推荐,适合多人协作)




git revert 版本号(如:git revert a1b2c3d)

收起

命令作用详解:

  • git reset \-\-hard 版本号:强制回滚到指定版本,工作区、暂存区的内容都会同步到该版本,之后的提交记录会被删除(无法恢复,谨慎使用);
  • git revert 版本号:不会删除任何提交记录,而是生成一条新的提交记录,将代码恢复到指定版本,后续的修改仍然保留(安全,多人协作时优先使用);
  • 版本号:通过 git log \-\-oneline 获取,如 a1b2c3d(前7位即可,Git 会自动识别)。

7. 撤销工作区的修改(未提交到暂存区)

适用于:在工作区修改了文件,但还没执行 git add,想放弃修改,恢复到上一次提交后的状态。

Terminal window

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 撤销单个文件的修改




git checkout -- 文件名(如:git checkout -- index.html)




# 撤销所有工作区的修改(未 add 的)




git checkout .

命令作用:放弃工作区的所有未暂存修改,将文件恢复到最近一次 git commitgit add 后的状态(注意:撤销后,修改会彻底丢失,无法恢复)。

8. 撤销暂存区的修改(已 add 但未 commit)

适用于:执行了 git add,将修改提交到了暂存区,但还没执行 git commit,想撤销暂存,重新修改。

Terminal window

1
2
3
4
5
6
7
8
9
git reset HEAD 文件名(如:git reset HEAD index.html)


# 撤销所有暂存区的修改




git reset HEAD .

命令作用:将暂存区的修改撤销回工作区,此时文件状态会从“绿色(staged)”变回“红色(modified)”,之后可以重新修改、重新 add。

四、远程仓库操作(多人协作必备)

远程仓库(如 GitHub、GitLab、Gitee)是用于多人共享代码的服务器,本地仓库的代码可以推送到远程,也可以从远程拉取别人的代码,实现协作开发。

前提:你已经有一个远程仓库(如在 GitHub 上创建了仓库),且本地 Git 已配置好远程仓库地址。

1. 关联远程仓库(第一次绑定)

适用于:本地已有 Git 仓库,想要和远程仓库绑定,实现代码同步。

Terminal window

1
git remote add origin 远程仓库地址

命令作用详解:

  • git remote:用于管理远程仓库的命令(如添加、删除、查看远程仓库);
  • add:添加远程仓库;
  • origin:远程仓库的别名(默认用 origin,可自定义,如 git remote add github 远程地址),后续操作远程仓库时,用别名即可,无需输入完整地址;
  • 远程仓库地址:从 GitHub/GitLab 复制,一般分为 HTTPS 和 SSH 两种(HTTPS 无需配置密钥,直接输入账号密码即可;SSH 需要配置密钥,无需每次输入账号密码,推荐长期使用)。

查看已关联的远程仓库:

Terminal window

1
git remote -v

命令作用:查看当前本地仓库关联的所有远程仓库,输出会显示远程仓库的别名、地址,以及可进行的操作(fetch:拉取,push:推送)。

2. 从远程仓库拉取代码(同步别人的修改)

适用于:多人协作时,别人将代码推送到了远程仓库,你需要将远程的最新代码拉取到本地,保持本地和远程同步。

Terminal window

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 方式1:拉取远程默认分支(如 main/master)的最新代码(最常用)




git pull origin main(或 master,取决于远程仓库的默认分支名)




# 方式2:拉取远程指定分支的代码




git pull origin 分支名(如:git pull origin develop)

命令作用详解:

  • git pull:等价于 git fetch \+ git merge,即先从远程拉取最新代码到本地临时区域,再自动合并到当前本地分支;
  • origin:远程仓库别名;
  • main/master:远程仓库的默认分支(GitHub 现在默认分支是 main,旧版本是 master);
  • 注意:拉取代码前,建议先执行 git commit,将本地的修改提交到本地版本库,避免拉取时出现代码冲突。

3. 将本地代码推送到远程仓库(分享自己的修改)

适用于:你在本地完成了代码修改(已 commit 到本地版本库),想要将修改推送到远程仓库,让别人看到你的代码。

Terminal window收起

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 方式1:推送本地默认分支到远程默认分支(第一次推送需加 -u)




# 第一次推送(绑定本地分支和远程分支,后续可直接用 git push)




git push -u origin main(或 master)



# 后续推送(已绑定分支,无需加 -u)




git push origin main(或 master)



# 方式2:推送本地指定分支到远程指定分支




git push origin 本地分支名:远程分支名(如:git push origin develop:develop)

收起

命令作用详解:

  • git push:将本地版本库的提交记录推送到远程仓库;
  • \-u:第一次推送时使用,用于绑定本地分支和远程分支(如本地 main 分支绑定远程 main 分支),后续推送时,直接输入 git push 即可,无需指定别名和分支;
  • 推送失败常见原因:① 本地代码不是最新的(需先 git pull 拉取远程最新代码,解决冲突后再推送);② 没有远程仓库的权限(检查账号密码或 SSH 密钥配置)。

4. 克隆远程仓库到本地(第一次下载)

适用于:本地没有该项目,直接从远程仓库下载完整的项目代码(包括所有版本记录)。

Terminal window

1
git clone 远程仓库地址

命令作用详解:

  • git clone:将远程仓库的所有内容(包括代码、版本记录、分支)完整下载到本地,自动创建项目文件夹,并初始化 Git 仓库;
  • 执行后,本地会自动关联该远程仓库(别名默认是 origin),无需再执行 git remote add
  • 示例:git clone https://github\.com/用户名/项目名\.git(HTTPS 地址),或 git clone git@github\.com:用户名/项目名\.git(SSH 地址)。

5. 查看远程分支

Terminal window收起

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 查看本地所有分支




git branch




# 查看远程所有分支




git branch -r




# 查看本地和远程所有分支




git branch -a

收起

命令作用:

  • git branch:查看本地已有的分支,当前所在分支会用 \* 标记;
  • \-r:查看远程仓库的所有分支;
  • \-a:查看本地和远程的所有分支(远程分支会显示为 remotes/origin/分支名)。

6. 切换/创建分支(多人协作核心)

多人协作时,建议每人在自己的分支上开发,避免直接修改默认分支(main/master),开发完成后再合并到默认分支。

Terminal window展开

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 1. 创建新分支(并切换到该分支,最常用)




git checkout -b 分支名(如:git checkout -b develop)










# 等价于以下两条命令:




# git branch 分支名(创建分支)




# git checkout 分支名(切换到该分支)



# 2. 切换到已有的本地分支




git checkout 分支名(如:git checkout main)




# 3. 切换到远程分支(并创建本地对应分支)




git checkout -b 本地分支名 origin/远程分支名(如:git checkout -b develop origin/develop)

展开

命令作用详解:

  • git checkout \-b 分支名:一次性完成“创建分支+切换分支”,高效便捷;
  • 分支命名建议:按功能命名(如 feature/login,表示登录功能分支)、按bug修复命名(如 fix/banner\-bug),便于区分。

7. 合并分支(将开发分支的代码合并到默认分支)

适用于:在开发分支(如 develop)完成开发后,将代码合并到默认分支(如 main),让修改生效。

Terminal window

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1. 先切换到要合并到的目标分支(如 main 分支)




git checkout main




# 2. 合并开发分支(如 develop 分支)到当前分支(main)




git merge develop

命令作用:将指定分支(如 develop)的所有修改,合并到当前所在的分支(如 main),合并后,main 分支就包含了 develop 分支的所有代码。

注意:合并时可能会出现代码冲突(如两个人同时修改了同一个文件的同一行),此时需要手动解决冲突:

  1. 执行 git merge 后,Git 会提示“冲突文件”;
  2. 打开冲突文件,找到标记冲突的地方(用 \<\<\<\<\<\<\<=======\>\>\>\>\>\>\> 标记);
  3. 修改冲突内容(保留需要的代码,删除冲突标记);
  4. 执行 git add \.git commit \-m \&\#34;解决合并冲突\&\#34;,完成合并。

8. 删除分支(分支开发完成后)

Terminal window收起

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 删除本地分支(分支已合并到主分支,可安全删除)




git branch -d 分支名(如:git branch -d develop)






# 强制删除本地分支(分支未合并,强行删除,谨慎使用)




git branch -D 分支名










# 删除远程分支




git push origin --delete 分支名(如:git push origin --delete develop)

收起

命令作用:删除无用的分支,保持分支结构清晰,避免混乱。

五、常用补充命令(高频实用)

Terminal window展开

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# 1. 查看当前分支的提交差异(对比工作区和暂存区)




git diff


# 2. 查看暂存区和本地版本库的差异




git diff --cached




# 3. 查看两个分支之间的差异




git diff 分支1 分支2(如:git diff main develop)










# 4. 暂存当前修改,切换到其他分支(临时切换分支,不提交当前修改)




git stash # 暂存当前修改




git stash pop # 恢复暂存的修改(恢复后,暂存记录删除)




git stash list # 查看所有暂存记录










# 5. 重命名本地分支




git branch -m 旧分支名 新分支名










# 6. 更新远程分支列表(远程删除了分支,本地同步)




git fetch --prune

展开

每个命令的作用简要说明:

  • git diff:快速查看修改的具体内容(哪一行被修改、新增/删除了什么);
  • git stash:临时保存未提交的修改,常用于“正在开发一个功能,突然需要切换到其他分支修复bug”的场景;
  • git fetch \-\-prune:同步远程分支的删除操作,避免本地显示已删除的远程分支。

六、常见问题解决(新手必看)

1. 拉取/推送代码时,提示“权限不足”

原因:未配置正确的账号密码或 SSH 密钥。

解决方法:

  • 若用 HTTPS 地址:重新输入正确的 GitHub/GitLab 账号密码;
  • 若用 SSH 地址:配置 SSH 密钥(网上搜索“GitHub SSH 密钥配置”,按步骤操作即可,配置一次终身可用)。

2. 合并分支时出现代码冲突

解决方法:按前面“合并分支”部分的步骤,手动修改冲突文件,删除冲突标记,保留需要的代码,再提交即可。

注意:冲突解决后,一定要仔细检查代码,确保没有误删有用的内容。

3. 误删本地代码/误回滚版本,如何恢复?

解决方法:执行 git reflog,查看所有操作记录,找到误删/误回滚前的版本号,再执行git reset \-\-hard 版本号,即可恢复到该版本。

4. 推送代码时,提示“本地版本落后于远程版本”

原因:远程仓库有别人推送的最新代码,你的本地代码不是最新的,无法直接推送。

解决方法:先执行 git pull 拉取远程最新代码,解决冲突后,再执行 git push

七、总结(核心流程梳理)

Git 的核心操作围绕“本地仓库”和“远程仓库”展开,新手记住以下流程即可快速上手:

  1. 前期准备:安装 Git → 配置用户名和邮箱;
  2. 本地开发:初始化仓库(git init)→ 修改文件 → 提交到暂存区(git add .)→ 提交到本地版本库(git commit -m "说明");
  3. 多人协作:克隆远程仓库(git clone)→ 拉取远程更新(git pull)→ 创建分支开发 → 推送分支到远程(git push)→ 合并分支;
  4. 问题处理:版本回滚(git reset/git revert)、解决冲突、恢复误删代码(git reflog)。

Git 命令看似多,但常用的只有十几个,多练习几次(比如新建一个测试项目,反复执行 add、commit、push、pull 等操作),就能熟练掌握。记住:所有命令的核心都是“跟踪版本、同步代码”,理解每个命令的作用,比死记硬背更重要。