Git 基础操作:从 init 到第一次 commit 的完整走查

日常其实只有一个循环:改文件 → git add → git commit。把 git status 读明白,循环就不会走错。

最后更新:2026-10-30

Git 命令速查表 → Git 安装指南 → 撤销三件套 →

三句话入门基础操作

新建仓库还是克隆已有仓库

# 新建:在空目录里
git init
git init -b main          # 直接把初始分支命名为 main

# 克隆:已有远程仓库
git clone https://github.com/user/repo.git
git clone --depth 1 https://github.com/user/repo.git   # 只要最新代码

init 之后目录里会多一个 .git/,不要手动改它;想「取消版本控制」删掉 .git/ 即可(会丢失全部历史)。

日常三步循环

git status                       # 1. 看现在处于什么状态
git add src/app.js               # 2. 把改动放进暂存区
git commit -m "feat: 添加登录页"  # 3. 提交,形成一次快照
git log --oneline                # 确认提交成功

循环可以重复很多次;一次提交只做一件事,历史才可读、可回滚。

读懂 git status

状态含义
Untracked files新文件,Git 还没跟踪,需要 add
Changes not staged已跟踪文件被改,但还没 add
Changes to be committed已 add,等 commit
同时出现在两栏add 之后又改了文件,两个版本并存

用 git status -s(短格式)更快:M 修改、A 新增、?? 未跟踪、D 删除。

add 的几种用法

git add file.txt          # 单个文件
git add src/              # 整个目录
git add -A                # 所有改动(新增 + 修改 + 删除)
git add -p                # 交互式,逐个 hunk 选择要不要暂存

写好一次提交

git commit -m "fix: 修复登录态过期判断"
git commit -am "chore: 更新依赖"     # 跳过 add(仅限已跟踪文件)
git commit --amend                   # 修补上一次提交(信息或内容)

看历史

git log --oneline --graph --decorate   # 一行一提交,带分支图
git show HEAD                          # 看最近一次提交的改动
git diff HEAD~1 HEAD                   # 最近两次提交之间的差异

只关心某个文件的历史,用 git log -p <file> 追单个文件的每次改动。

常见问题

第一次提交前要做什么?

先配好身份(user.name / user.email),否则 commit 会报 Please tell me who you are;再确认 .gitignore 已排除依赖与密钥,避免把 node_modules、.env 提交进去。

git add . 和 git add -A 有什么区别?

git add . 只处理当前目录及其子目录;git add -A 处理整个仓库,并且会记录删除。在仓库根目录两者通常等价,但在子目录里执行时结果不同。

提交信息写错了怎么改?

最近一次且未推送:git commit --amend -m 新信息。已推送:不要 amend(会改写历史),用 git revert,或者再提交一次 docs: 补充说明。