git 的使用指南
前言
git 是现在做项目、写代码绕不开的版本管理工具,也是把博客推到 GitHub、再部署到 Vercel 的基础。前面几篇博客里其实一直在用 git,但从来没系统地整理过。好记性不如烂笔头,很多命令记着用用就忘了,于是决定写一篇文章,把 git 从安装到日常使用、再到远程协作的完整流程记录下来。
本文以 Linux / macOS 的命令行为主,Windows 下安装 Git 后在 Git Bash 里操作即可,命令基本一致。
文章里会尽量把「为什么这么做」也写出来,方便之后忘记时回来一看就懂。
安装与配置
安装
- Linux:用包管理器装,比如
sudo apt install git或sudo dnf install git。 - macOS:可以直接
brew install git,或者装 Xcode Command Line Tools。 - Windows:去 git 官网 下载安装包,一路下一步,装完会自带
Git Bash,后面的命令都在里面跑。
装完验证一下:
1 | git --version |
能输出版本号就说明装好了。
配置个人信息
commit 的时候 git 会记录是谁提交的,所以要先配好:
1 | # 全局配置(所有仓库通用) |
建议
user.name和user.email用你在 GitHub 上的昵称和邮箱,这样提交的头像和归属才能对上。
基本概念
在写命令之前,先搞懂 git 的三块区域,很多操作都是在它们之间搬文件:
| 区域 | 说明 |
|---|---|
| 工作区 | 你正在编辑的文件夹,也就是项目本身 |
| 暂存区(stage) | 用 git add 把文件「标记」后放到的地方 |
| 仓库(.git) | 真正存提交历史的地方,git commit 把暂存区写进去 |
简单记:工作区 → add → 暂存区 → commit → 仓库 → push → 远程仓库。
初始化仓库
在一个空文件夹里初始化一个新仓库:
1 | mkdir my-blog && cd my-blog |
git init 会创建隐藏的 .git 目录,所有版本历史都存这里。
忽略不该提交的文件
.gitignore 文件里写的是「不要提交」的路径,一行一个,支持 * 通配符。Hexo 博客项目一般这样写:
1 | # 依赖 |
.gitignore本身是要提交的,它决定了整个团队统一的忽略规则。
注意:已经被 git 跟踪过的文件,写进.gitignore是没用的,得先git rm --cached <文件>再忽略。
日常操作
查看状态
1 | git status # 看哪些文件改了、哪些还没跟踪 |
git status 是日常最高频的命令之一,提交前扫一眼总没错。
添加文件到暂存区
1 | git add file.md # 添加单个文件 |
提交
1 | git commit -m "feat: 添加 git 使用指南" |
提交信息建议遵循 类型: 描述 的格式,方便以后看历史:
| 类型 | 含义 |
|---|---|
feat |
新功能 |
fix |
修 bug |
docs |
文档改动 |
style |
格式调整 |
refactor |
重构 |
chore |
构建、依赖等杂项 |
查看历史
1 | git log # 完整提交历史 |
撤销与回退
这部分是新手最容易慌的地方,其实场景就几种:
撤销工作区的修改(还没 add)
1 | git checkout -- file.md # 丢弃工作区对某文件的改动 |
撤销暂存(add 了但还没 commit)
1 | git reset file.md # 文件回到工作区(内容还在) |
回退提交(已经 commit 了)
1 | git reset --hard <commit-id> # 回到指定提交,之后的提交丢弃 |
已经 push 到远程的提交,不要用
reset改历史,用revert生成反向提交更安全,不会影响别人的本地仓库。
分支
git 的分支是「指向某个提交的指针」,创建和切换都很轻量:
1 | git branch # 列出本地分支 |
习惯:平时在
main/master上不开工,先切个功能分支,做完合并回来。
远程仓库
关联远程
1 | # 查看已关联的远程仓库 |
-u 会设置上游追踪,之后直接 git push / git pull 就行,不用每次都写全。
拉取与克隆
1 | git pull # 拉取远程最新并合并(= fetch + merge) |
完整流程速查
把一个本地项目首次推到 GitHub:
1 | git init |
实用技巧
查看最近改动
1 | git log --oneline -5 # 最近 5 条提交 |
保存未完成的工作(stash)
切分支前手头改了一半不想提交,可以先藏起来:
1 | git stash # 暂存当前改动 |
查看大文件 / 二进制改动
1 | git diff --stat # 只看改动的统计信息 |
快捷打包项目
1 | # Example.zip 是文件名(最好加上.zip),head 是 commit id |
常见问题
修改了已经跟踪的文件后,.gitignore 不生效?
.gitignore 只对未被跟踪的文件有效。文件已经进过仓库了,写进忽略文件也不会自动忽略,需要:
1 | git rm --cached <文件> # 从仓库移除但保留本地文件 |
推送被拒绝(rejected, non-fast-forward)?
通常是远程有你本地没有的提交,先 git pull(或 git pull --rebase)合并后再推:
1 | git pull --rebase origin main |
不小心把大文件提交进去了?
如果还没推送,用 git rm --cached 移除并加进 .gitignore;如果已经推送,历史里已经有这个文件了,需要用 git filter-repo 之类的工具清理历史。
小结
把最常用的命令记下来:init 建仓库、add + commit 保存进度、status / log 看状态和历史、branch / switch 管分支、push / pull 同步远程。理解了「工作区 → 暂存区 → 仓库 → 远程」这条线,大部分操作都能自己推导出来。
写博客、部署项目、协作开发,git 都是地基。先把这几个命令用熟,后面再学 rebase、cherry-pick 这些高级操作就不难了。
注:本篇文章大部分由 AI 生成。

