Git介绍及使用

什么是Git

Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。它由 Linux 创始人 Linus Torvalds 为了帮助管理 Linux 内核开发而开发,具有速度快、完全分布式、允许成千上万个并行分支等优点。


Git历史

  • 1991–2002:Linux 内核采用手工方式管理补丁和归档,效率低下。
  • 2002–2005:Linux 内核项目开始使用专有的分布式版本控制系统 BitKeeper。
  • 2005 年:BitKeeper 与社区的合作关系结束,收回免费使用权。Linus Torvalds 在两周内基于使用 BitKeeper 的经验教训开发出 Git,以满足 Linux 内核的开发需求。

image-20220821141020491

Linus Torvalds:Linux 和 Git 之父。


版本控制分类

本地版本控制

  • 记录每次文件更新,为每个版本做一个快照或补丁文件。

  • 缺点:无法协作,容易丢失。

image-20220912015639351

集中版本控制(SVN、CVS)

  • 所有版本数据保存在单一服务器上,开发者从服务器同步更新。
  • 缺点:必须联网,服务器故障可能导致数据丢失。

image-20220914091455054

分布式版本控制(Git)

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

image-20220915110331507


常见版本控制工具对比

工具 类型 特点
Git 分布式 目前最流行,速度快,分支强大
SVN 集中式 使用广泛,适合传统项目
CVS、VSS、TFS 集中式 较老,逐渐被取代

Git 与 SVN 最主要区别

  • Git:分布式,无中央服务器,每个人电脑都是完整版本库,可离线工作。
  • SVN:集中式,必须联网才能工作,版本库集中在中央服务器。

image-20220915110331507


基础 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 核心理论

四个工作区域

  1. 工作区(Workspace):存放项目代码的目录。
  2. 暂存区(Stage/Index):临时存放改动,即将提交到本地仓库。
  3. 本地仓库(Repository):安全存放所有版本数据的位置,HEAD 指向最新版本。
  4. 远程仓库(Remote):托管代码的服务器(如 GitHub、GitLab)。

image-20220915161408881

文件状态与工作流程

文件状态:

  • Untracked:未跟踪
  • Unmodify:已入库,未修改
  • Modified:已修改
  • Staged:暂存

工作流程:

  1. 在工作区修改文件 → 文件状态变为 Modified
  2. git add 将修改放入暂存区 → 状态变为 Staged
  3. git commit 将暂存区内容提交到本地仓库 → 状态变为 Unmodify
  4. 如有远程仓库,git push 推送到远程。

image-20220915163810771


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个命令:

image-20220916091436268

忽略文件(.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)是高效协作的基础。
  • 合理的分支管理和标签使用能使项目开发更清晰、发布更规范。

推荐学习资源

posted @ 2022-10-18 15:44  克峰同学  阅读(204)  评论(0)    收藏  举报