Git 入门教程

一、Git 诞生与核心优势

1. Git 的由来

1991 年 Linus 创建 Linux 系统,早期全球开发者通过邮件发送代码补丁,Linus 手动合并,效率极低。 当时主流工具 CVS/SVN 属于集中式 ,必须联网、速度慢;商用版本控制软件收费,不符合开源理念。 2002 年 Linux 社区短暂免费使用 BitKeeper,2005 年双方授权破裂,Linus 仅用两周 C 语言写出 Git,一个月内 Linux 项目全量切换 Git 管理代码。 2008 年 GitHub 上线,免费托管开源项目,Git 彻底成为行业标准。

2. 集中式 VS 分布式版本控制

(1)集中式 CVCS(SVN/CVS)

架构:单一中央服务器存储全部版本,所有人联网拉取、提交代码。 缺陷:

  1. 服务器单点故障,宕机后所有人无法提交代码;
  2. 服务器硬盘损坏若无备份,项目所有历史版本永久丢失
  3. 离线环境无法提交、查看历史、回退版本,断网仅能修改代码。
(2)分布式 DVCS(Git)

架构:每个人本地完整克隆一份仓库全量历史,远程服务器仅作为同步中转。 优势:

  1. 无单点故障:服务器损坏,任意开发者本地仓库完整备份,可用来恢复项目;
  2. 绝大多数操作在本地执行,无需联网,离线环境可提交、回退、查看历史;
  3. 分支创建、合并速度极快,支持多人并行开发。

3. Git 独特存储机制:快照而非差异对比

SVN/CVS 存储逻辑

每次版本只记录文件修改的差值,追溯历史需要叠加所有差异,效率偏低。

Git 存储逻辑

每次提交生成完整文件快照;文件无修改时仅保留快照引用,不会重复存储,版本切换、历史查询速度极快。

4. 核心特点总结

  1. 分布式架构,本地拥有完整仓库,支持离线操作;
  2. 快照存储模型,版本操作性能远超 SVN;
  3. 分支轻量级,创建与合并几乎无性能损耗;
  4. 完全开源免费,Gitee/GitHub 生态完善。

二、Windows 系统 Git 完整安装教程(避坑指南)

1. 安装前置要求

  • 安装路径禁止中文、空格 ,推荐D:\install\Git
  • 普通 Intel/AMD 电脑下载64-bit.exe安装包,ARM 架构轻薄本选择 arm64 版本。

2. 关键步骤选项推荐(开发最优配置)

步骤 1:默认编辑器选择

新手不推荐 Vim,下拉选择Use Visual Studio Code as Git's default editor;没有安装 VSCode 可暂时选择 Vim,后续通过命令修改。

步骤 2:PATH 环境变量(最重要)

选择第二项:Use Git from the Windows Command Prompt 作用:CMD、PowerShell、IDEA、VSCode 等工具都能识别 git 命令,日常开发必备。

步骤 3:HTTPS 加密库

保持默认Use the OpenSSL library,适配 Gitee/GitHub 远程仓库。

步骤 4:换行符转换

默认Checkout Windows-style, commit Unix-style line endings,Windows 开发标准配置。

步骤 5:终端、附加功能一路默认

终端选择 MinTTY,附加功能全部勾选,直接点击 Install 开始安装。

3. 安装完成验证

打开 CMD 或者 Git Bash,输入如下命令,正常输出版本号即代表安装成功:

bash

复制代码
git --version

4. 全局用户名邮箱配置

所有代码提交记录都会绑定该信息,全局只需要配置一次永久生效:

复制代码
git config --global user.name "你的姓名"
git config --global user.email "你的邮箱"
# 查看全部全局配置
git config --global -l

三、Git 仓库四大核心区域(底层原理)

1. 四大区域概念

  1. 工作区(Workspace) 项目文件夹中肉眼可见的所有文件,日常编写代码的位置;
  2. 暂存区(Stage/Index) 对应.git/index隐藏文件,临时存放待提交的修改,相当于中转站;
  3. 本地版本库(Repository) 项目根目录隐藏文件夹.git,存储所有历史提交快照、分支、版本记录;
  4. 远程仓库(Remote) Gitee/GitLab/GitHub 云端仓库,用于团队多人同步代码。

2. 核心指针 HEAD

HEAD 永远指向当前正在操作的分支,切换分支时 HEAD 同步移动;版本回退本质就是移动 HEAD 指针。

3. 完整开发工作流

  1. git clone:克隆远程完整仓库到本地;
  2. 在工作区修改代码;
  3. git add:将工作区文件提交至暂存区;
  4. git commit:把暂存区快照存入本地版本库;
  5. git push:将本地版本同步到远程仓库;
  6. git pull:拉取远程最新代码合并到本地。

四、本地仓库基础命令实操(高频全套)

1. 创建本地仓库

  1. 新建空文件夹,右键选择Git Bash Here打开终端;

  2. 初始化 git 仓库,自动生成隐藏.git文件夹:

    git init

2. 文件追踪流程:工作区→暂存区→本地仓库

(1)查看文件状态
复制代码
git status

红色:未跟踪文件(工作区新建文件);绿色:文件已加入暂存区,等待提交。

(2)git add 添加文件到暂存区
复制代码
# 添加单个文件
git add readme.txt
# 添加多个文件
git add test1.txt test2.txt
# 添加当前目录所有新增/修改文件(开发高频)
git add .
# 撤销暂存,文件退回工作区
git rm --cached readme.txt
(3)git commit 提交快照到本地版本库

-m 参数必须填写提交备注,清晰描述本次修改内容:

bash

复制代码
git commit -m "首次提交,新增readme文档"

3. 丢弃工作区未提交修改

文件修改完成,但还没有 add、commit,一键恢复到上次提交版本:

复制代码
# 旧版本写法
git checkout -- readme.txt
# Git新版推荐写法
git restore readme.txt

4. 版本回退(核心命令)

(1)查看所有提交日志
复制代码
# 完整详细日志
git log
# 简洁单行日志
git log --pretty=oneline
# 所有操作记录,用于找回丢失的版本号
git reflog
(2)回退版本
复制代码
# 回退到上一个版本
git reset --hard HEAD^
# 回退到往上100个版本
git reset --hard HEAD~100
# 根据版本号精准回退(推荐方式)
git reset --hard 8d95a43

5. 文件删除操作

复制代码
# 删除文件并加入暂存区
git rm test.txt
# 将删除操作提交到版本库
git commit -m "删除无用测试文件"
# 误删文件恢复(版本库存在即可找回)
git reset HEAD test.txt
git checkout -- test.txt

6. git diff 对比文件差异

复制代码
# 工作区 VS 暂存区
git diff
# 暂存区 VS 本地版本库
git diff --cached
# 工作区 VS 当前最新版本(HEAD)
git diff HEAD

结语

本文覆盖 Git 底层原理、Windows 安装避坑、四大存储区域、本地仓库全套操作。后续章节可以继续学习 Git 分支管理、冲突解决、远程仓库 Gitee 联动实操。

复制代码
# 全局基础配置
git config --global user.name/email
# 仓库初始化
git init
# 文件管理核心
git add . / git commit -m "" / git status
# 版本回退
git log / git reflog / git reset --hard
# 丢弃本地修改
git restore / git checkout --
# 文件差异对比
git diff
相关推荐
XS03010614 小时前
Git远程仓库实操笔记
笔记·git·elasticsearch
Java成神之路-14 小时前
Git 合并冲突完全指南:分支合并、拉取冲突、推送冲突
git
NutShell Wang15 小时前
拆解 GitHub gh-stack:堆叠 PR 工作流的设计取舍与工程实现
前端·git·开源·github·代码复审·开发者工具·vibe coding
咩咩啃树皮15 小时前
第62篇:Git团队协作完整流程——企业多人开发规范、分支管理、冲突解决、上线流程(最终封笔篇)
git
AI行业学习1 天前
Claude Code + cc-switch + Git + Node.js 全套下载+安装+配置完整版
开发语言·git·python·前端框架·node.js·html·notepad++
豆角焖肉1 天前
.gitignore:配置文件+初学入门
git·gitignore
月落归舟2 天前
Git 新手入门指南
git
达达车2 天前
git使用技巧记录
git·使用技巧·版本管理
Simon—欧阳2 天前
Git使用心得&理解
git