第一章 Git 核心认知: 到底啥是 Git?
1. Git 是什么?一个能"时空穿梭"的代码备份神器
想象一下,你写文档时,系统能自动保存每一步修改,并且你可以随时回到任何一个过去的版本------这就是 Git 的核心作用。
官方定义 :Git 是一个免费、开源的分布式版本控制系统。它能高效地管理项目从诞生到发布的所有历史记录。
核心特点:
- 速度快、体积小 :操作几乎在瞬间完成,只在项目中创建一个隐藏的
.git文件夹来记录历史。 - 强大的分支系统:可以轻松创建代码的"平行宇宙",在不同分支上开发不同功能,互不干扰。
- 分布式:每个开发者电脑上都有一个完整的项目仓库(包含全部历史),不依赖中央服务器,更安全、更灵活。
💡 一句话理解:Git 就是你个人专属的、功能超级强大的"代码时光机 + 备份管理器"。
2. 为什么要用 Git?先了解版本控制工具的演变
在Git出现之前,主要有两种管理代码的方式:
| 类型 | 代表工具 | 工作原理 | 优点 | 缺点(Git解决的痛点) |
|---|---|---|---|---|
| 集中式 | SVN, CVS | 所有代码和历史都存放在中央服务器上。大家从服务器下载最新代码,修改后再上传回去。 |
管理方便,权限控制集中。 | 单点故障:服务器一挂,所有人都无法工作。 依赖网络:无法离线提交。 |
| 分布式 | Git, Mercurial | 每个人电脑上都有完整的仓库克隆,包含所有代码和历史记录。 | 1. 离线工作:可以在本地任意提交。 2. 绝对安全:每个人的电脑都是完整备份。 3. 性能极快:绝大多数操作在本地完成。 | 概念相对复杂(但学会后真香!) |
举个例子:
- 用 SVN:改代码前必须连服务器拿最新版,服务器崩了只能干等着;
- 用 Git:本地有完整代码库,改完先存本地,联网后再同步到远程,服务器崩了也能从其他同事电脑恢复代码。
1.3 代码托管中心:代码该存在哪?
代码托管中心就是 "远程代码仓库",本质是联网的服务器,分两种场景:
| 部署环境 | 常用工具 | 适用场景 |
|---|---|---|
| 局域网(公司内) | GitLab | 公司内部代码(私密) |
| 互联网 | GitHub(外网) | 开源项目、个人学习 |
| 互联网 | Gitee(码云) | 国内访问快,适合国内项目 |
第二章 Git 环境准备:安装与配置(新手必做)
2.1 安装 Git
- 下载地址:Git 官网(Windows 选 64-bit Git for Windows Setup);
- 安装步骤:一路下一步(默认选项足够用,不用改);
- 验证安装:右键桌面 → 选择「
Git Bash Here」,弹出命令窗口就说明装好了。
2.2 核心配置:设置用户签名(必须做!)
Git 需要识别 "谁提交的代码 ",首次安装必须配置用户签名(和 GitHub/Gitee 账号无关):
bash
# 设置用户名(比如你的昵称)
git config --global user.name "xiaobai"
# 设置邮箱(随便填,主要用来标识身份)
git config --global user.email "xiaobai@test.com"
--global:全局配置,所有本地仓库都生效;- 验证配置:输入
git config --list,能看到刚才设置的 name 和 email 就对了。
第三章 Git 核心命令:本地仓库操作(高频)
理解下面这三个概念,就理解了Git的一半:
-
工作区:你眼睛直接看到的、正在编辑的项目文件夹。
-
暂存区 (Stage) :一个"准备台"。你把工作区的改动(
git add)放到这里,准备打包成一个"包裹"。临时存放修改,相当于 "待提交缓冲区"; -
本地仓库 (Repository) :最终的"档案库"。你把暂存区的"包裹"(
git commit)正式存档到这里,生成一个永久的版本记录(隐藏的.git 文件夹里)。bash工作区 -(git add)-> 暂存区 -(git commit)-> 本地仓库
3.1 核心命令速查表(带案例)
| 命令 | 作用 | 实战案例 |
|---|---|---|
| git init | 初始化本地库(生成.git 文件夹,不要手动去修改它) |
cd 你的代码文件夹 → git init |
| git status | 查看文件状态 | git status(看文件是未跟踪 / 已修改) |
| git add 文件名 | 把文件加到暂存区 | git add hello.txt(单个文件) git add .(所有文件) |
| git commit -m "日志" 文件名 | 提交到本地库(生成版本) | git commit -m "首次提交" hello.txt |
| git reflog | 查看简洁历史记录(含版本号) | git reflog(看版本号,比如 a1b2c3) |
| git log | 查看详细历史记录 | git log(含提交时间、作者、完整版本号) |
| git reset --hard 版本号 | 版本穿梭(回滚到指定版本) | git reset --hard a1b2c3 |
3.2 文件状态说明(新手必懂)
执行git status后,文件主要有 2 种状态:
Untracked(未跟踪):新文件,还没加过暂存区(红色提示);
→ 解决:git add 文件名 转为 "已暂存";Tracked(已跟踪):已经纳入版本控制,分 3 种子状态:- Unmodified(未修改):和本地库版本一致(无提示);
- Modified (已修改):文件改了但没加暂存区(红色提示);
→ 解决:git add 文件名 转为 "已暂存"; - Staged (已暂存):加了暂存区但没提交(绿色提示);
→ 解决:git commit 转为 "未修改"。
实战小案例:
bash
# 1. 进入代码文件夹
cd D:/mycode
# 2. 初始化本地库
git init
# 3. 创建新文件
echo "hello git" > hello.txt
# 4. 查看状态(hello.txt是Untracked)
git status
# 5. 加到暂存区
git add hello.txt
# 6. 提交到本地库
git commit -m "新增hello.txt" hello.txt
# 7. 查看历史记录
git reflog
四、 新手必会的 Git 单机操作命令
4.1 分支是啥?
分支就是代码的 "独立副本":比如主分支(master/main)是稳定版本,你开发新功能时,创建一个专属分支(比如 feat-login),改代码不会影响主分支,开发完再合并回去。
分支好处:
- 多任务并行:分支的好处:你可以在 feature-a 分支开发功能A,在 hotfix-b 分支修复紧急bug,最后再选择性地合并到主分支,互不影响。;
- 风险可控:分支开发失败直接删掉,不影响主分支。
4.2 分支核心命令
| 命令 | 作用 | 实战案例 |
|---|---|---|
| git branch 分支名 | 创建分支 | git branch feat-login |
| git branch -v | 查看所有分支(* 表示当前分支) | git branch -v |
| git checkout 分支名 | 切换分支 | git checkout feat-login |
| git merge 分支名 | 把指定分支合并到当前分支 | 先切回 master:git checkout master → git merge feat-login |
底层逻辑 :分支本质是 "指针",HEAD 指针指向当前所在分支,创建分支就是多一个指针,切换分支就是移动 HEAD。
4.3 分支冲突:解决代码打架问题
(1)冲突咋来的?
多分支合并时,同一个文件的同一行有不同修改(比如 master 分支改了 hello.txt 第 1 行,feat-login 也改了第 1 行),Git 没法自动选,就会触发冲突。
冲突表现:命令行提示MERGING,文件里出现特殊符号:
bash
<<<<<<< HEAD (当前分支的代码)
hello master
======= (合并过来的分支代码)
hello login
>>>>>>> feat-login
(2)🔧 遇到合并冲突怎么办?(3 步走)
- 编辑文件:删除特殊符号,手动决定保留哪段代码(比如保留hello git);
- 加到暂存区:git add 冲突文件名;
- 提交(不带文件名!):git commit -m "解决分支冲突"。
第五章 Git 团队协作:远程仓库操作
一个人用叫备份,多人用才叫协作。我们需要一个远程仓库(如GitHub、Gitee)作为大家同步代码的中心枢纽。
5.1 远程仓库核心命令
| 命令 | 作用 | 实战案例(以 Gitee 为例) |
|---|---|---|
| git remote -v | 查看远程仓库别名 / 地址 | git remote -v |
| git remote add 别名 远程地址 | 给远程仓库起别名(简化命令) | git remote add origin https://gitee.com/xiaobai/mycode.git |
| git push 别名 分支 | 推送本地分支到远程 | git push [-u] origin master |
| git clone 远程地址 | 克隆远程仓库到本地(含.git) | git clone https://gitee.com/xiaobai/mycode.git |
| git pull 别名 分支 | 拉取远程最新代码并合并 | git pull origin master |
bash
# 1. 为远程仓库起一个别名(通常叫 origin)
git remote add origin https://gitee.com/yourname/yourrepo.git
# 2. 将本地仓库的"主线"(如main分支)推送到远程
git push -u origin main
# 第一次推送需要 -u 参数建立关联,以后直接 git push 即可
# 3. 将同事推送的新代码拉取到本地(并自动合并)
git pull origin main
# 相当于先 git fetch(抓取) 再 git merge(合并)
# 4. 克隆!(加入新项目的第一步)
git clone https://gitee.com/team/project.git
# 这个命令会做三件事:①下载代码 ②初始化本地仓库 ③自动连接远程仓库
5.2 关键说明:git pull = git fetch + git merge
git fetch:只拉远程最新代码到本地(不合并),能先看别人改了啥;git merge:把拉下来的代码合并到当前分支;git pull:一步到位(新手常用,注意先 commit 本地修改再 pull,避免冲突)。
5.3 协作流程(新手版)
- 克隆远程仓库到本地:git clone 远程地址;
- 创建本地分支开发:git branch feat-01 → git checkout feat-01;
- 开发完提交到本地:git add . → git commit -m "完成功能01";
- 推送分支到远程:git push origin feat-01;
- 拉取远程最新代码:git pull origin master(避免合并冲突);
- 合并分支到主分支(一般由技术经理操作)。
第六章 IDEA 集成 Git:可视化操作更省心
不用记命令,用 IDEA 图形界面就能操作,步骤如下:
- 配置 Git 路径:File → Settings → Git → 选择 Git 安装目录下的git.exe → 点击 Test,提示 OK 就对了;
- 获取 Git 仓库 :
- 本地初始化:VCS → Import into Version Control → Create Git Repository → 选择代码文件夹;
- 克隆远程仓库:File → New → Project from Version Control → 粘贴远程地址 → Clone;
- 日常操作 :
- 提交:右键项目 → Git → Commit Directory(相当于git add + git commit);
- 推送:Git → Push(相当于git push);
- 拉取:Git → Pull(相当于git pull);
- 分支操作:右下角分支名 → New Branch(创建)/Checkout(切换)/Merge(合并)。
第七章 Git 实用技巧:解决开发小痛点
7.1 git stash:暂存未完成的代码
场景:正在开发功能 A,突然要改 bug,不想提交半成品代码?用 stash 暂存!
用 git stash 把当前改动"藏起来",工作区就干净了。办完事回来,用 git stash pop 再"取出来"。
bash
# 暂存当前修改(工作区变干净)
git stash
# 查看暂存列表
git stash list
# 恢复暂存的代码(并删除暂存记录)
git stash pop
# 恢复暂存的代码(保留暂存记录)
git stash apply
# 删除指定暂存记录
git stash drop stash@{0}
# 清空所有暂存
git stash clear
7.2 git rebase:让提交记录更整洁
rebase(变基)作用:把本地未推送的提交,"接" 到远程最新代码后面,避免合并出多余的提交记录,让历史记录呈直线(对比 merge 的分叉记录更清爽)。
bash
# 拉取远程最新代码并变基
git pull --rebase origin master
⚠️ 注意:不要对已经推送到远程的提交用 rebase(会打乱团队提交记录)!
7.3 .gitignore:忽略不需要版本控制的文件
有些文件(比如编译后的 target、IDE 配置文件)不需要提交到仓库,新建.gitignore文件,写入要忽略的内容即可:
bash
# Maven编译目录
target/
!.mvn/wrapper/maven-wrapper.jar
# IDEA配置文件
.idea/
*.iml
*.ipr
*.iws
# VS Code配置
.vscode/
# 日志文件
logs/
# 临时文件
*.tmp
✅ 注意 :.gitignore 要放在仓库根目录,且必须在文件未被跟踪前创建(如果已经 add 过,先git rm --cached 文件名再配置)。
第八章 Git 规范与避坑:新手少踩雷
8.1 分支命名规范(按团队约定来)
推荐格式:类型-需求号/日期-开发者,比如:
- feat-0131-登录功能-jie(新功能);
- fix-3387-重复请求-jie(修 bug);
- doc-接口文档-jie(改文档)。
常见分支类型:
| 类型 | 说明 |
|---|---|
| feat | 新功能开发 |
| fix | 修复 bug |
| doc | 文档修改 |
| refactor | 代码重构(不新增功能 / 修 bug) |
| test | 测试相关 |
| chore | 构建 / 工具配置修改 |
8.2 新手避坑指南
1. 不要直接在 master 分支开发:
公司一般有固定分支流程:dev(开发)→ test(测试)→ uat(预发)→ release(生产),开发时拉 dev 分支,测试提测拉 test,上线前合并到 release/uat;
2. 拉取代码优先选 release/uat:
dev/test 分支可能有同事未验证的代码,基于这些分支开发,会把不稳定代码带到生产;
3. 提交前先 pull:
避免本地代码和远程冲突,提交前先git pull拉最新代码;
4. 写清晰的提交日志:
比如feat: 需求0131-新增账期选择功能,别写 "改了点东西" 这种无效日志。
第九章 Git 命令行小技巧:提高效率
9.1 Linux 基础命令(Git Bash 常用)
| 命令 | 作用 |
|---|---|
| i | 进入编辑模式(修改文件时) |
| esc | 退出编辑模式 |
| yy | 复制当前行 |
| pp | 粘贴复制的内容 |
| :wq | 保存并退出编辑 |
| ll | 查看当前文件夹所有文件 |
| cat 文件名 | 查看文件内容 |
| tail -n 1 文件名 | 查看文件最后 1 行(n = 数字) |
9.2 Git Bash 复制粘贴
- 复制:选中内容 → 按Ctrl + Ins;
- 粘贴:按Shift + Ins(别用 Ctrl+C/V,没用!)。
💎 总结:Git 核心流程
- 本地:git init → 写代码 → git add → git commit;
- 远程:git remote add → git push(推代码)/git pull(拉代码);
- 分支:git branch → git checkout → 开发 → git merge;
- 避坑:先 pull 再提交,不用 master 开发,冲突手动解决,用完 stash 记得恢复。
Git 的核心是 "版本控制" 和 "协作",新手先掌握本地操作 + 分支 + 远程推送 / 拉取,再学 stash/rebase 等技巧,多练几次就能熟练~