Git介绍及使用
什么是Git
Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。它由 Linux 创始人 Linus Torvalds 为了帮助管理 Linux 内核开发而开发,具有速度快、完全分布式、允许成千上万个并行分支等优点。
Git历史
- 1991–2002:Linux 内核采用手工方式管理补丁和归档,效率低下。
- 2002–2005:Linux 内核项目开始使用专有的分布式版本控制系统 BitKeeper。
- 2005 年:BitKeeper 与社区的合作关系结束,收回免费使用权。Linus Torvalds 在两周内基于使用 BitKeeper 的经验教训开发出 Git,以满足 Linux 内核的开发需求。

Linus Torvalds:Linux 和 Git 之父。
版本控制分类
本地版本控制
-
记录每次文件更新,为每个版本做一个快照或补丁文件。
-
缺点:无法协作,容易丢失。
集中版本控制(SVN、CVS)
- 所有版本数据保存在单一服务器上,开发者从服务器同步更新。
- 缺点:必须联网,服务器故障可能导致数据丢失。

分布式版本控制(Git)
- 每个开发者本地都拥有完整的版本库,可离线工作,只需在联网时推送到远程。
- 优点:安全(任意一个本地仓库可恢复数据),支持强大的分支模型。
- 缺点:每个本地都存有全部代码,占用磁盘空间较大。

常见版本控制工具对比
| 工具 | 类型 | 特点 |
|---|---|---|
| Git | 分布式 | 目前最流行,速度快,分支强大 |
| SVN | 集中式 | 使用广泛,适合传统项目 |
| CVS、VSS、TFS | 集中式 | 较老,逐渐被取代 |
Git 与 SVN 最主要区别
- Git:分布式,无中央服务器,每个人电脑都是完整版本库,可离线工作。
- SVN:集中式,必须联网才能工作,版本库集中在中央服务器。

基础 Linux 命令(Git 常用)
| 命令 | 作用 |
|---|---|
cd |
改变目录 |
cd .. |
回退到上一级目录 |
pwd |
显示当前路径 |
ls |
列出当前目录文件 |
ls -l |
详细列出当前目录文件 |
touch <file> |
新建文件 |
rm <file> |
删除文件 |
mkdir <dir> |
新建目录 |
rm -r <dir> |
删除目录 |
mv <file> <dir> |
移动文件 |
reset / clear |
清屏 |
history |
查看命令历史 |
exit |
退出终端 |
# |
注释 |
警告:
rm -rf /会删除电脑全部文件,切勿在 Linux 下使用!
Git 核心理论
四个工作区域
- 工作区(Workspace):存放项目代码的目录。
- 暂存区(Stage/Index):临时存放改动,即将提交到本地仓库。
- 本地仓库(Repository):安全存放所有版本数据的位置,
HEAD指向最新版本。 - 远程仓库(Remote):托管代码的服务器(如 GitHub、GitLab)。

文件状态与工作流程
文件状态:
- Untracked:未跟踪
- Unmodify:已入库,未修改
- Modified:已修改
- Staged:暂存
工作流程:
- 在工作区修改文件 → 文件状态变为 Modified。
git add将修改放入暂存区 → 状态变为 Staged。git commit将暂存区内容提交到本地仓库 → 状态变为 Unmodify。- 如有远程仓库,
git push推送到远程。

Git 操作详解
项目搭建
初始化本地仓库
git init
在当前目录创建 .git 隐藏文件夹,开始版本控制。
克隆远程仓库
git clone <仓库URL>
例如:
git clone https://github.com/vuejs/vue.git
文件操作
查看状态
git status # 查看所有文件状态
git status <file> # 查看指定文件状态
添加文件到暂存区
git add <file> # 添加指定文件
git add . # 添加所有改动文件(包括新增和修改)
提交到本地仓库
git commit -m "提交说明"
查看历史记录
git log # 查看提交历史
git blame <file> # 以列表形式查看指定文件每行的修改记录
日常使用只要记住下图6个命令:

忽略文件(.gitignore)
在主目录下创建 .gitignore 文件,写入要忽略的文件或目录规则。
规则示例:
# 注释
*.txt # 忽略所有 .txt 文件
!lib.txt # 但 lib.txt 除外
/temp # 忽略根目录下的 temp 文件
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 忽略 doc/notes.txt,但不包括 doc/server/arch.txt
常用 Java 项目忽略示例:
*.class
*.log
*.lock
target/
.idea/
*.iml
分支管理
分支让开发可以并行进行,不影响主线。
常用分支命令
git branch # 列出本地分支
git branch -r # 列出远程分支
git branch <branch-name> # 新建分支(停留在当前分支)
git checkout -b <branch-name> # 新建分支并切换到该分支
git checkout <branch-name> # 切换分支
git merge <branch-name> # 合并指定分支到当前分支
git branch -d <branch-name> # 删除本地分支
git push origin --delete <branch-name> # 删除远程分支
分支冲突解决
当合并时两个分支修改了同一文件的同一部分,Git 无法自动合并,会产生冲突。需手动编辑冲突文件,保留所需代码,然后重新提交。
分支策略建议:
master分支应保持稳定,仅用于发布。- 日常开发在
dev分支进行,稳定后合并到master。
标签管理
为重要的提交快照打标签,常用于版本发布。
git tag -a v1.0 -m "版本1.0" # 创建带注解的标签(-a 表示 annotated)
git tag # 列出所有标签
git show v1.0 # 查看标签信息
git push origin v1.0 # 推送标签到远程
不带
-a的轻量标签不会记录打标签者信息、日期和注解,建议使用带注解的标签。
总结
- Git 是目前最先进的分布式版本控制系统,广泛应用于个人和团队开发。
- 掌握 Git 的核心概念(工作区、暂存区、本地仓库、远程仓库)和常用命令(add、commit、push、pull、branch、merge)是高效协作的基础。
- 合理的分支管理和标签使用能使项目开发更清晰、发布更规范。
推荐学习资源:

浙公网安备 33010602011771号