Git 基础命令完全指南:add/commit/log/status/diff

小飞兽 Git 104 次阅读 2026-07-29

Introduction

Git 是目前最流行的分布式版本控制系统,广泛应用于软件开发的各个场景。无论是个人项目还是团队协作,Git 都是不可或缺的工具。本文详细介绍 Git 最核心的五个基础命令,帮助你快速掌握版本控制的基本操作。

基础语法

# 查看工作区状态
git status

将文件添加到暂存区

git add <文件名> # 添加单个文件 git add . # 添加所有修改的文件 git add -A # 添加所有文件(包括删除)

将暂存区内容提交到版本库

git commit -m "提交信息" git commit -am "提交信息" # 仅跟踪文件,直接提交(跳过 git add)

查看提交历史

git log git log --oneline # 简洁模式 git log --graph # 图形化显示分支 git log -n <数量> # 查看最近 n 条提交

查看文件差异

git diff # 工作区 vs 暂存区 git diff --cached # 暂存区 vs 最新提交 git diff HEAD # 工作区 vs 最新提交 git diff <分支1> <分支2> # 比较两个分支差异

完整代码示例

# ===== Git 基础命令实战 =====

1. 初始化 Git 仓库

git init my-project cd my-project

2. 创建文件并查看状态

echo "# 我的项目" > README.md git status

输出:Untracked files: README.md(红色,表示未跟踪)

3. 将文件添加到暂存区

git add README.md git status

输出:Changes to be committed: README.md(绿色,表示已暂存)

4. 提交文件

git commit -m "feat: initial commit"

输出:[master (root-commit) abc1234] feat: initial commit

5. 修改文件并查看差异

echo "这是第二次修改" >> README.md git diff # 查看工作区与暂存区的差异

输出:+这是第二次修改

git add README.md
git diff --cached # 查看暂存区与最新提交的差异

输出:+这是第二次修改

6. 再次提交

git commit -m "docs: update README"

7. 查看提交历史

git log

输出:

commit abc1234 (HEAD -> master)

Author: Your Name &lt;you@example.com&gt;

Date: ...

docs: update README

#

commit def5678

Author: Your Name &lt;you@example.com&gt;

Date: ...

feat: initial commit

8. 查看简洁历史

git log --oneline

输出:

abc1234 docs: update README

def5678 feat: initial commit

9. 模拟工作流程:修改 -> 暂存 -> 提交

echo "新功能开发中" > feature.txt git add feature.txt git commit -m "feat: add feature placeholder"

10. 使用 git commit -am(仅适用于已跟踪文件)

echo "快速修改" >> README.md git commit -am "quick: append to README"

echo "完成!"

常见问题

Q1: git commit -m 和 git commit 有什么区别?

git commit -m "信息" 直接在命令行指定提交信息,适合简短描述。git commit 不带 -m 会打开默认编辑器(通常是 vim)让你输入多行提交信息,适合需要详细描述的情况。使用 git commit -v 可以打开编辑器并显示 diff 内容。

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

在大多数情况下两者效果相同。但在克隆的仓库中,git add . 只会添加当前目录及子目录的文件,而 git add -A(或 git add --all)会添加所有修改,包括仓库根目录的变更。建议优先使用 git add -A

Q3: 如何撤销 git add?

使用 git reset HEAD <文件名> 可以将文件从暂存区移除,但保留工作区的修改。git reset HEAD(不加文件名)会取消所有暂存。如果想完全丢弃修改,需要用 git checkout -- <文件名>git restore <文件名>

Q4: 提交信息应该怎么写?

推荐使用约定式提交(Conventional Commits)格式:type: description,例如 feat: add user loginfix: resolve null pointer。常见的 type 包括:feat(新功能)、fix(修复)、docs(文档)、style(格式)、refactor(重构)、test(测试)、chore(杂项)。

延伸阅读