Git 基础命令 — init / clone / add / commit / status
环境配好后,这一章讲 Git 最核心的日常操作:建仓库、加文件、提交、看状态。掌握这五个命令,你就完成了"版本控制"最基本的能力——把改动存进历史。后面所有的分支、合并、协作,都建立在这个循环之上。
1. git init — 创建新仓库
把一个普通文件夹变成 Git 仓库,只需要一条命令:
# 把一个普通文件夹变成 Git 仓库
mkdir my-project && cd my-project
git init # 在当前目录生成 .git/
# .git 是个隐藏目录,藏着 Git 的全部数据
# 删掉它 = 删库!千万别动
ls -la # 能看到 .git 目录
# 初始化后,Git 会提示:
# Initialized empty Git repository in /Users/you/my-project/.git/
# 如果想换默认分支名(老版本默认 master)
git init -b main # 直接以 main 作为初始分支git init 会在当前目录生成一个隐藏目录 .git,里面藏着 Git 的全部数据(对象库、引用、配置)。这个目录是仓库的"灵魂",删掉它就等于删库。日常你完全不需要碰它,Git 会自己管理。
2. git clone — 克隆已有仓库
更多时候你不是从零建仓库,而是把别人(或自己)在 GitHub 上的项目下载到本地。这就用 git clone:
# 克隆:把远程仓库整个下载到本地(含全部历史)
git clone https://github.com/vuejs/vue.git
# 会在当前目录创建 vue/ 子目录
# 克隆到指定目录名
git clone https://github.com/vuejs/vue.git my-vue
# 用 SSH 地址(免密,推荐配好 SSH 后用)
git clone git@github.com:vuejs/vue.git
# 只克隆最近一次提交(大仓库省时间/流量)
git clone --depth 1 https://github.com/torvalds/linux.git
# 克隆指定分支
git clone -b dev https://github.com/you/repo.git克隆会做四件事:下载全部历史、检出最新代码到工作区、自动关联远程(origin)、自动建立本地分支。克隆完立刻就能开发,不需要再 init。
3. git add — 加入暂存区
回顾上一篇讲的三个区域:工作区 → 暂存区 → 仓库。git add 是第一步,把工作区的改动"标记为待提交"。
# 三步循环:工作区 → 暂存区 → 仓库
# 1. 在工作区新建/修改文件
echo "# 我的笔记" > README.md
echo "print('hi')" > hello.py
# 2. 加入暂存区(staging)
git add README.md # 只暂存这一个文件
git add hello.py # 再暂存一个
git add . # 暂存当前目录所有改动(最常用)
git add -A # 暂存整个仓库所有改动(含删除)
git add -p # 交互式选择"哪几行"暂存(精细控制)
# 3. 写入仓库(永久历史)
git commit -m "feat: 初始化项目,添加 README 和 hello"
# -m 后面是提交信息;不带 -m 会打开编辑器写多行信息
git commit # 打开编辑器写详细的 commit message为什么要暂存?因为很多时候你改了 5 个文件,只想提交其中 3 个——暂存区让你精细挑选哪些改动进这一次提交,让历史更清晰。最强大的是 git add -p(patch 模式),它会逐块问你"这几行要不要加",适合一个文件里只想提交一部分改动的情况。
4. git commit — 写入历史
暂存区的改动用 git commit "永久写入历史"。一旦 commit,改动就进了 Git 的对象库,只要你不主动删,就永远在。
# Conventional Commits 规范:让历史可读、可自动生成 changelog
# 格式:type(scope): subject
#
# type 常用值:
# feat 新功能
# fix 修复 bug
# docs 文档改动
# style 格式调整(不影响代码逻辑,如缩进)
# refactor 重构(既不是新功能也不是修 bug)
# perf 性能优化
# test 增删测试
# chore 构建工具、依赖等杂项
# revert 撤销某次提交
#
# 示例:
git commit -m "feat(login): 添加手机号验证码登录"
git commit -m "fix(cart): 修复数量为负的空指针异常"
git commit -m "docs: 更新 README 安装步骤"
git commit -m "refactor(auth): 抽取 token 校验逻辑到中间件"
# 多行 message:用多个 -m,每段是一段
git commit -m "feat: 添加用户头像上传" -m "支持 jpg/png,最大 2MB,压缩到 200x200"commit message 是给未来的自己和同事看的。"修改 bug"是废话,"fix: 登录页空指针异常"才有用。团队常遵循 Conventional Commits 规范,用 feat/fix/docs 等前缀分类,这样能自动生成 changelog、自动判断版本号怎么升。
5. git status — 查看状态
这是你最常敲的命令——随时知道"现在仓库处于什么状态":哪些文件改了、哪些进了暂存区、当前在哪个分支。
# git status 是你最常敲的命令,看当前仓库状态
git status
# 典型输出(有改动还没 add):
# On branch main
# Changes not staged for commit:
# modified: hello.py # 已修改但未暂存(红色)
#
# Untracked files:
# README.md # 新文件,Git 还没追踪(红色)
# add 之后再看:
git add .
git status
# Changes to be committed: # 已暂存,等待 commit(绿色)
# new file: README.md
# modified: hello.py
# 简洁模式:一行一个文件,带分支信息
git status -sb
# ## main...origin/main
# M hello.py
# ?? README.md新手建议每次 add 前后、commit 前都看一眼 status,避免误提交。输出里红色表示还没暂存,绿色表示已暂存等待提交。
完整工作流:第一次提交
把上面五步串起来,就是一次完整的"从零到第一次提交"流程:
git init建仓库。- 创建/修改文件(工作区)。
git add .加入暂存区。git status确认无误。git commit -m "feat: 初始化项目"写入历史。
这就是 Git 日常 80% 的操作。剩下的分支、合并、远程,都是在这个循环之上扩展的。
常见误区与技巧
- 不要把大文件提交进去:二进制文件(图片、视频、数据库)改一次就存一份,仓库会迅速膨胀。用
.gitignore排除,或用 Git LFS 管理。 - 不要一次提交太多:一次 commit 只做一件事,历史才好读、好回退。改了登录又改了购物车,应该拆成两个 commit。
- commit 信息写现在时:写"添加登录"而不是"添加了登录",约定俗成。
- 忘记 add 某个文件怎么办:如果刚 commit 完发现漏了,可以
git add 漏的文件然后git commit --amend,把改动并入上一个提交(还没 push 时安全)。
← 上一篇 Git 安装与配置
下一篇 Git 分支 →