Git 是开发者必备的版本控制工具,无论是个人项目还是团队协作,掌握它都能极大提升效率。本文将从基础配置到分支管理,带你一步步吃透 Git 的核心用法,并用 C++、JavaScript、Python、Java、Go 等语言的常见场景举例,让你快速上手。
1. 快速上手:Git 常用命令速查
如果你已经熟悉 Git 的基本概念,可以直接看下面的速查表。新手建议从第二部分开始系统学习。
| 命令 | 作用 | 注意 |
|---|---|---|
| 查看 Git 版本 | ||
| 初始化 Git 仓库 | ||
| 文件标识 | 暂存某个文件 | 文件标识以终端为起始的相对路径 |
| 暂存所有文件 | ||
| 提交产生版本记录 | 每次提交,把暂存区内容快照一份 | |
| 查看文件状态(详细信息) | ||
| 查看文件状态(简略信息) | 第一列 = 暂存区状态,第二列 = 工作区状态 | |
| 查看暂存区文件列表 | ||
| 文件标识 | 从暂存区恢复到工作区 | 文件标识为 则恢复所有文件 |
| 文件标识 | 从暂存区移除文件(停止跟踪) | |
| 查看提交记录(详细信息) | ||
| 查看提交记录(简略信息) | 显示:版本号、分支指针、提交说明 | |
| 查看完整历史(简略信息) | 包括提交、切换、回退等所有记录 | |
| 版本号 | 切换版本代码到暂存区和工作区 | 支持三种模式: – :保留暂存区和工作区 – :不保留暂存区和工作区 – (默认):不保留暂存区,工作区保留 |
| 分支名 | 创建分支 | |
| 查看本地分支 | ||
| 分支名 | 删除分支 | 确保记录已合并到其他分支 |
| 分支名 | 切换分支 | |
| 分支名 | 创建并立即切换分支 | |
| 分支名 | 把指定分支的提交历史合并到当前分支 |
2. 远程仓库协作流程
远程仓库是团队协作的基础。以 Gitee、GitHub、GitLab 为例,步骤如下:
- 注册账号:在托管平台注册并登录。
- 新建仓库:填写仓库名称,创建后获得远程地址,例如
。
- 添加远程地址:在本地仓库执行
。git remote add 远程仓库别名 远程仓库地址 - 推送代码:使用
将本地提交推送到远程。git push -u 远程仓库别名 本地和远程分支名
以下步骤以 Gitee 为例,GitHub 等平台操作类似。
其中 表示建立上游跟踪(后续可直接使用 或 )。

⚠️ 注意:上传前需要确保远程仓库初始化,已有分支。首次上传会用到个人的Gitee账号,
如果错误添加,在 控制面板 > 凭据管理器 修改
3. 配置与初始化
3.1 配置用户信息
每次提交都会记录作者信息,所以先设置用户名和邮箱:
# 查看 Git 版本(确认已安装)
git -v
# 设置全局用户名和邮箱(一次配置,全局生效)
git config --global user.name "用户名"
git config --global user.email "邮箱"
# 查看所有配置信息(验证是否配置成功)
git config --list
使用 --global 表示全局配置,如果某个项目需要不同身份,可以去掉该参数单独设置。
提示: 表示全局配置,如果某个项目需要单独使用其他身份,可以去掉 并在项目内单独配置。
3.2 初始化本地仓库
仓库是版本历史的“时光机”。有两种方式创建:
- 本地初始化:在项目目录执行
,会生成隐藏的git init文件夹。.git - 远程克隆:从服务器拉取已有仓库
。git clone 远程仓库地址
3.3 Git 的三个核心区域
理解工作区、暂存区、版本库是掌握 Git 的关键:
| 区域 | 说明 | 对应命令 |
|---|---|---|
| 工作区 | 你实际编辑文件的文件夹(可见可改) | → 暂存区 |
| 暂存区 | 临时存放改动的地方,像一个“准备提交的购物车” | → 版本库 |
| 版本库 | 真正保存版本快照的地方,每次提交生成一个记录 | 查看暂存区内容 |

文件流转流程:工作区 → git add → 暂存区 → git commit → 版本库。
# 暂存指定文件(工作区 → 暂存区)
git add page/login/index.html
# 暂存所有改动文件
git add .
# 查看暂存区中有哪些文件
git ls-files
# 提交暂存区内容 → 版本库,生成版本快照
git commit -m "1.登录页面"
# git commit 后想修改注释
git commit --amend -m "新注释"
4. 文件状态与暂存区妙用
4.1 文件状态
Git 中的文件分为“未跟踪”和“已跟踪”两大类。已跟踪文件又细分为:
| 状态 | 含义 | 出现场景 |
|---|---|---|
| (未跟踪) | 从未被 Git 管理 | 新建的文件 |
| (新添加) | 第一次被 Git 暂存 | 之前版本记录中没有此文件 |
| (未修改) | 三个区域内容一致 | 刚提交完成后 |
| (已修改) | 工作区内容发生了变化 | 修改了文件内容 |
查看状态推荐使用简略模式:
# 详细信息
git status
# 简略信息(一列:暂存区状态,第二列:工作区状态)
git status -s

4.2 暂存区的灵活操作
暂存区是“临时缓冲区”,让你能精细控制每次提交的内容。常用操作:
- 从暂存区恢复到工作区:
撤销工作区的改动。git restore <文件标识> # 如果文件标识为 . 则恢复所有文件,否则是指定文件 git restore . - 从暂存区移除文件:
停止跟踪但不删除磁盘文件。git rm --cached <文件标识>
⚠️ 这个命令常用于不小心把密码文件或临时文件添加到暂存区时,将其剔除。
小提示: 和 的区别
:用暂存区的内容覆盖工作区(撤销未提交的修改)
:把文件移出暂存区,变成未跟踪状态
5. 版本回退与忽略文件
5.1 时光穿梭机:回退版本
查看提交历史:
git log --oneline
回退命令对照表:
| 模式 | 暂存区 | 工作区 | 常用场景 |
|---|---|---|---|
| 保留 | 保留 | 只想修改 commit 信息,不改代码 | |
| (默认) | 重置 | 保留 | 撤销 commit,但保留代码修改 |
| 重置 | 重置 | 完全回到过去,丢弃所有改动(最常用但也最危险) |

示例:
# 混合模式(默认)
git reset 版本号
# 软回退
git reset --soft 版本号
# 硬回退(慎用!)
git reset --hard 版本号 将版本库中指定版本的内容恢复到工作区。⚠️ 注意事项
只能回退已经提交到版本库的记录,未暂存或未提交的改动不会被保护。
回退后可以继续修改 → 暂存 → 提交,生成新的版本。
5.2 忽略文件:.gitignore
在项目根目录创建 文件,写入忽略规则。典型内容:.gitignore
- 系统文件:
,.DS_StoreThumbs.db - 编译结果:
,*.class,*.exedist/ - 日志缓存:
,*.log,*.tmpcache/ - 涉密文件:
,password.txtsecrets.yml
# gitignore文件常用配置
node_modules/
.vscode/
*.log
.DS_Store
.env
dist/
注意: 只对尚未被跟踪的文件生效。如果一个文件已经被 过,那么即使加入 也不会自动停止跟踪,必须先 。
6. 分支管理实战
分支是 Git 最强大的功能之一,让多人在同一项目上并行开发。典型结构如下:
C3 → C4 → C5 (main)
\
C6 → C7 → C8 (content)
6.1 创建与切换分支
| 命令 | 作用 |
|---|---|
| 创建分支 | |
| 切换分支 | |
| 创建并立即切换到新分支 |
示例:
# 查看当前分支(* 表示当前分支)
git branch
# 创建名为 content 的新分支
git branch content
# 切换到 content 分支
git checkout content
# 输出:Switched to branch 'content'
# 或者一步到位:创建并切换
git checkout -b content
切换后,工作区自动变为该分支的最新版本。使用 查看历史。git log --oneline
注意: 表示当前所在分支是 。
6.2 合并与删除分支
场景:将 合并回 login-bug,然后删除 main。login-bug
# 1. 切回到要合入的分支(通常是主分支)
git checkout main
# 2. 合并其他分支进来
git merge login-bug
# 3. 删除已合并的分支指针
git branch -d login-bug
如果 在创建 main 后又有新提交,合并时无法使用 content,Git 会自动执行一次合并提交(产生新快照):Fast-forward
C6 → C7 → C8 (content)
/ \
C4 → C5 → C9 → C10 → C11 (main, HEAD)
git checkout master # 切回主分支
git merge content # 合并 content 分支(自动产生合并提交)
git branch -d content # 删除已合并的分支
6.3 合并冲突解决
当两个分支修改了同一文件同一区域时,Git 会标记冲突。典型标记示例:

在 VSCode、IntelliJ 等 IDE 中会高亮显示冲突区域,手动选择保留哪个版本,然后保存并提交。
表示当前所在分支(例如 )的内容
表示要合并过来的分支的内容
是分隔线
7. 团队协作最佳实践
以下建议能帮你减少冲突、提升效率:
| 建议 | 说明 |
|---|---|
| 按页面/模块划分不同分支开发 | 减少多人同时修改同一文件的概率 |
| 公共代码放在统一文件夹维护 | 明确责任边界,变更前及时沟通 |
| 统一开发环境(Node 版本、npm 包等) | 避免因环境差异导致的语法或依赖冲突 |
| 频繁拉取主分支更新 | 及时同步,减少分叉过远 |
在 C++、JavaScript、Python、Java、Go 等语言项目中,分支策略尤其重要。例如,在 Python 项目中,你可能需要为不同版本的功能创建 feature 分支;在 Go 项目中,合并前务必确保代码通过测试。
[AFFILIATE_SLOT_2]总结
本文从配置、初始化、文件管理到分支操作,系统梳理了 Git 的核心知识。记住:工作区→暂存区→版本库是基本流程,分支让你并行开发,远程仓库实现协作。多动手实践,很快就能得心应手。
git -vgit initgit addgit add .git commit -m "说明注释"git statusgit status -sgit ls-filesgit restore.git rm --cachedgit loggit log --onelinegit reflog --onelinegit reset--soft--hard--mixedgit branchgit branchgit branch -dgit checkoutgit checkout -bgit merge-ugit pushgit pull
--global--globalgit addgit commitgit ls-filesUA*Mgit restoregit rm --cachedrestorerm --cached--soft--mixed--hard.gitignoregit add.gitignoregit rm --cachedgit branch 分支名git checkout 分支名git checkout -b 分支名HEAD -> contentcontentHEADmasterpublish=======
浙公网安备 33010602011771号