-
GIT简介
什么是版本控制
版本控制(Version Control)是一种记录文件内容变化、以便查阅特定版本修订情况的系统。在软件开发中,它追踪代码的每次修改,支持随时回退到历史版本,并与团队成员协同编辑而不互相覆盖。
如果把每次修改文档都另存为「方案_v1.docx」「方案_v2_最终版.docx」,就是在做手工版本控制。版本控制系统将这一过程自动化、规范化,让每次修改都有迹可循。
为什么需要版本控制?
| 场景 | 没有版本控制 | 使用版本控制 |
| 代码改错想回退 | 手动还原,甚至无法恢复 | 一条命令回退到任意历史版本 |
| 多人同时修改同一文件 | 互相覆盖、版本混乱 | 自动合并、冲突提示 |
| 想知道某段代码的作者和原因 | 无法追查 | 每次提交记录作者、时间和说明 |
| 同时开发新功能又维护线上版本 | 复制文件夹管理分支 | 轻量分支,随时创建、合并、切换 |
| 硬盘损坏或误删 | 数据永久丢失 | 远程/分布式备份,随时恢复 |
版本控制是软件工程的基础设施——没有它,稍具规模的开发难以有序进行。
Git 的诞生
Git 诞生于 2005 年,由 Linux 内核创始人 Linus Torvalds 设计开发。
当时 Linux 内核社区使用的商业版本控制工具 BitKeeper 被收回免费授权。面对全球最大开源项目突然失去版本控制工具的局面,Linus 决定自己写一个。他设定了四个核心目标:
-
速度极快:Linux 内核数万文件、数百万行代码,任何操作需在秒级完成
-
分布式:每个开发者拥有完整仓库副本,不依赖单一中央服务器
-
数据完整性:每次提交用 SHA-1 哈希唯一标识,任何篡改立即被发现
-
非线性开发:强大的分支管理,允许多条开发线并行
仅用约两周时间,Linus 写出了 Git 原型。如今 Git 已是全球使用最广泛的版本控制系统,GitHub、GitLab、Gitee 等平台均基于 Git 构建。
Git 与 SVN 的对比
SVN(Subversion)是 Git 诞生前最主流的集中式版本控制系统。下表对比核心差异:
| 维度 | Git(分布式) | SVN(集中式) |
| 架构 | 每个开发者拥有完整仓库副本 | 仅中央服务器保存完整仓库 |
| 离线能力 | 完整:提交、历史、分支均可离线 | 受限:几乎所有操作需连接服务器 |
| 分支操作 | 轻量、秒级创建切换,鼓励频繁使用 | 笨重,分支本质是目录复制,成本高 |
| 存储方式 | 快照存储,按内容寻址 | 记录文件差异(delta) |
| 数据完整性 | SHA-1 哈希校验,篡改可被检测 | 依赖服务器端校验 |
| 学习曲线 | 概念较多(暂存区、本地仓库),初期较陡 | 概念简单,上手快 |
| 速度 | 绝大多数本地操作,极快 | 依赖网络,受延迟和带宽限制 |
| 适用场景 | 现代软件开发、分布式团队、开源项目 | 对目录级权限有严格需求的传统企业 |
结论:Git 的分布式架构、高效性能和灵活分支管理使其成为现代软件开发的事实标准。新项目几乎已全面采用 Git。
-
下载及安装
-
获取 Git
-
Git 是免费的开源软件,所有平台的安装包均可从官网获取:https://git-scm.com 官网会自动检测你的操作系统并提供对应的下载链接。
-
镜像(如腾讯软件中心、npm.taobao.org、git-for-windows)下载以提升速度。
-
-
验证安装
安装完成后,打开 CMD 或 PowerShell,输入以下命令验证:
git --version
-
Mac 安装
方式一:Homebrew 安装(推荐)
Homebrew 是 Mac 上最流行的包管理器。如果尚未安装 Homebrew,先在终端执行:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装 Homebrew 后,执行以下命令安装 Git:
brew install git
方式二:官网安装包
访问 https://git-scm.com/downloads/mac ,下载 .dmg 安装包,双击运行并按照向导完成安装。
方式三:Xcode Command Line Tools
Mac 已安装 Xcode 或运行过 xcode-select --install 的,系统可能已内置 git(通常版本较旧)。可在终端运行 git --version 检查。
-
Linux 安装
在 Linux 上,通过系统自带的包管理器即可安装 Git。
Debian / Ubuntu 系列
sudo apt update
sudo apt install git
Red Hat / Fedora / CentOS 系列
Fedora 22+
sudo dnf install git
CentOS / RHEL 7 及更早版本
sudo yum install git
Arch Linux
sudo pacman -S git
验证安装
git --version
-
安装后初始配置
Git 安装完成后,在正式开始使用前,必须完成以下两项基础配置。这些配置只需执行一次,会写入当前用户的全局 Git 配置文件(位于 ~/.gitconfig 或 C:\Users\用户名\.gitconfig)。
-
配置用户名和邮箱
这两项配置会出现在你每一次的提交记录中,是代码归属的标识:
git config --global user.name "你的姓名"
git config --global user.email "你的邮箱@example.com"
示例:
bash
git config --global user.name "Zhang San"
git config --global user.email "zhangsan@example.com"
-
配置换行符处理(推荐)
不同操作系统使用不同的换行符:Windows 用 \r\n(CRLF),Mac / Linux 用 \n(LF)。为避免跨平台协作时出现混乱,建议配置自动转换:
Windows 用户:
git config --global core.autocrlf true
此配置会在检出代码时将 LF 转换为 CRLF,提交时再转回 LF。
Mac / Linux 用户:
git config --global core.autocrlf input
此配置仅在提交时将 CRLF 转换为 LF,检出时不做转换。
-
常用命令
命令行窗口:
# 查看用户名 git config user.name # 查看邮箱 git config user.email
查看当前配置
# 查看所有配置 git config --list # 查看全局配置 git config --global --list # 查看某一项配置 git config --global user.name
| 命令 | 用途 | 常用参数 |
| git init | 初始化本地仓库 | — |
| git clone | 克隆远程仓库 | <url> -b <分支> --depth 1 |
| git status | 查看工作区状态 | -s(简短格式) |
| git add | 暂存文件 | .(全部)-p(逐块确认) |
| git commit | 提交暂存区 | -m "msg" --amend(修改上次提交) |
| git push | 推送至远端 | -u origin main -f(强制) |
| git pull | 拉取并合并远端 | --rebase(变基而非合并) |
| git fetch | 拉取远端不合并 | --all --prune(清理已删分支) |
| git branch | 分支管理 | -d <名>(删除)-r(查看远端)-a(全部) |
| git checkout | 切换分支/恢复文件 | -b <名>(新建并切换)<文件>(丢弃修改) |
| git switch | 切换分支(新版) | -c <名>(新建并切换) |
| git merge | 合并分支 | --squash --no-ff |
| git rebase | 变基 | -i HEAD~n(交互式整理提交) |
| git stash | 暂存未提交修改 | push -m "msg" pop list |
| git log | 查看提交历史 | --oneline --graph --author="名" -n 5 |
| git diff | 查看差异 | <文件> --staged(暂存区差异)HEAD~1 |
| git reset | 回退提交/取消暂存 | --soft HEAD~1 --hard HEAD <文件> |
| git remote | 远端管理 | -v(查看地址)add remove |
| git tag | 标签管理 | -a v1.0 -m "msg" -d <标签> |
| git cherry-pick | 拣选提交到当前分支 | <commit SHA> |
| git blame | 查看文件每行归属 | <文件> -L 10,20 |
-
仓库管理
本章深入讲解 Git 仓库的内部结构、远程仓库交互、分支管理策略以及团队协作的核心工作流。
4.1 仓库结构
4.1.1 三层本地+远端
理解 Git 的数据流转是高效使用 Git 的关键。Git 将数据管理分为三个逻辑区域:

4.3 分支管理
4.3.1 分支的概念与优势
分支(Branch)是 Git 最强大的特性之一。它让你可以在不影响主线代码的情况下,并行开发新功能、修复 Bug 或进行实验。

4.3.2 分支操作
查看所有本地分支(当前分支前有 * 标记)
git branch
查看所有分支(包括远程分支)
git branch -a
仅查看远程分支
git branch -r
查看分支最后一次提交信息
git branch -v
创建新分支(但不切换)
git branch feature/login
切换分支
git checkout feature/login
创建并切换到新分支
git checkout -b feature/login
或
git switch -c feature/login
基于指定提交创建分支
git checkout -b hotfix/urgent a1b2c3d
合并分支
先切换到目标分支(如 master)
git checkout master
将指定分支合并到当前分支
git merge feature/login
安全删除(仅删除已合并的分支)
git branch -d feature/login
强制删除(即使有未合并的改动)
git branch -D feature/login
删除远程分支
git push origin --delete feature/login

1144

被折叠的 条评论
为什么被折叠?



