Chapter 03
本地基础操作
日常开发中 80% 的 Git 操作都在本章:创建仓库、暂存、提交、查看历史、撤销修改、暂存工作。
创建仓库与状态查看
怎么创建一个新仓库?git init 和 git clone 的区别是什么?
两种方式:
git init — 在当前目录创建一个全新的空仓库。适合从零开始的项目。
git clone <url> — 从远程服务器克隆一个已有仓库到本地,包含完整历史。
git init my-project # 创建新目录并初始化 git clone https://github.com/user/repo.git # 克隆远程仓库
区别
init 创建的是空仓库(没有任何提交),clone 拷贝的是完整历史。如果你要参与已有项目,用 clone;如果从零开始,用 init。 怎么查看当前仓库的状态?
git status 是最常用的命令,告诉你:
git status # 显示: # - 当前分支名 # - 有哪些文件被修改了(工作区) # - 有哪些文件已暂存(staged) # - 有哪些文件未被追踪(untracked)
建议:每次操作前后都跑一次 git status,养成习惯。
$
暂存与提交
怎么把文件加入暂存区?git add . 和 git add <file> 的区别?
git add <file> 只暂存指定文件。git add . 暂存当前目录下所有变更。
git add README.md # 只暂存 README.md git add . # 暂存所有变更文件 git add src/ # 暂存 src 目录下的所有变更
注意
git add . 会把所有变更都加进去,包括你可能不想提交的文件。建议配合 .gitignore 使用。 怎么提交?commit message 应该怎么写?
提交就是把暂存区的快照永久记录到仓库历史中:
git commit -m "feat: add user login page"
推荐使用 Conventional Commits 规范:
类型(范围): 简短描述 常用类型: feat: 新功能 fix: 修复 bug docs: 文档变更 refactor: 重构(不是新功能也不是修bug) style: 格式调整(不影响逻辑) test: 测试相关 chore: 构建工具/依赖变更
怎么查看提交历史?
git log 查看完整历史,常用选项:
git log # 完整日志 git log --oneline # 每行一个提交(精简) git log --oneline -5 # 最近 5 条 git log --graph # ASCII 分支图 git log --author="张三" # 按作者筛选 git log -p -- README.md # 查看某文件的历史变更
怎么查看文件的修改内容?
git diff 查看具体的代码变更:
git diff # 工作区 vs 暂存区(未暂存的修改) git diff --staged # 暂存区 vs 最新提交(已暂存的修改) git diff HEAD # 工作区 vs 最新提交(所有修改) git diff commit1 commit2 # 两个提交之间的差异
撤销操作
怎么撤销工作区的修改?
文件改坏了想恢复到上次提交的状态:
git restore <file> # 推荐(Git 2.23+) git checkout -- <file> # 传统写法(效果相同)
警告
这会丢弃工作区中未暂存的修改,且无法恢复!确认不需要这些修改后再执行。 怎么撤销暂存(取消 git add)?
文件已 git add 但想从暂存区移除:
git restore --staged <file> # 推荐(Git 2.23+) git reset HEAD <file> # 传统写法
文件内容不会变,只是从"已暂存"变回"未暂存"状态。
仓库已初始化,包含 2 个已提交文件:app.js, config.json
$
怎么删除文件?git rm 和手动删除有什么区别?
手动删除文件后,还需要 git add 来暂存删除操作。git rm 一步到位:
git rm <file> # 删除文件 + 自动暂存 rm <file> # 只删除文件,还需 git add git rm --cached <file> # 从仓库中移除,但保留本地文件
git rm --cached 适合把误提交的文件从仓库中移除但保留本地副本。
怎么重命名文件?Git 能追踪到重命名吗?
git mv old new 等价于 mv + git add。Git 通过内容相似度检测来识别重命名:
git mv old_name.txt new_name.txt
用 git log --follow 可以追踪重命名前的历史。
怎么查看某次提交的详细内容?
git show 查看某次提交的完整变更:
git show # 查看最新提交 git show abc1234 # 查看指定提交 git show --stat # 只看文件列表和统计
标签与暂存
怎么给重要提交打标签?
标签用于标记重要节点(如版本发布):
git tag v1.0.0 # 轻量标签 git tag -a v1.0.0 -m "正式发布1.0" # 附注标签(推荐) git tag # 查看所有标签 git show v1.0.0 # 查看标签详情
轻量标签只是一个指针,附注标签包含作者、日期、消息等完整信息。
git stash 是什么?什么时候用?怎么恢复?
git stash 临时保存未提交的修改,让工作区回到干净状态。典型场景:
# 正在开发功能,突然需要切换分支修 bug: git stash # 暂存当前修改 git switch hotfix-branch # 切换去修 bug # ... 修完 bug 后切回来 git stash pop # 恢复之前的修改
git stash list # 查看所有暂存 git stash pop # 恢复并删除最近的暂存 git stash apply # 恢复但保留暂存记录 git stash drop # 删除暂存记录
仓库已有 2 次提交,尝试打标签和使用 stash
$
