Git 命令速查表
| 类别 | 命令 | 简要说明 |
|---|---|---|
| 仓库配置 | git config |
配置 Git 的用户信息、别名等 |
| 仓库创建与克隆 | git init |
在当前目录初始化一个 Git 仓库 |
git clone |
克隆一个远程仓库到本地 | |
| 状态与信息 | git status |
查看工作区、暂存区的状态 |
git log |
查看提交历史 | |
git diff |
查看工作区与暂存区,或不同提交间的差异 | |
| 代码暂存与提交 | git add |
将文件添加到暂存区 |
git commit |
将暂存区的文件提交到本地仓库 | |
git rm |
从工作区和暂存区删除文件 | |
git mv |
移动或重命名文件 | |
| 分支管理 | git branch |
查看、创建、删除分支 |
git checkout |
切换分支或恢复文件 | |
git switch (Git 2.23+) |
更直观地切换分支 | |
git merge |
合并分支到当前分支 | |
| 远程仓库交互 | git remote |
查看、管理远程仓库别名 |
git fetch |
获取远程仓库的更新,但不合并 | |
git pull |
获取远程仓库的更新并合并到当前分支 | |
git push |
将本地分支的更新推送到远程仓库 | |
| 撤销与回退 | git reset |
重置 HEAD、暂存区或工作区的指针 |
git revert |
创建一个新的提交来撤销某个提交的更改 | |
| 标签管理 | git tag |
查看、创建、删除标签 |
| 存储与清理 | git stash |
暂时保存未提交的修改 |
git clean |
清理工作区中未被跟踪的文件 |
基础配置
在开始使用 Git 前,你需要配置用户信息,这个信息会记录在你的每一次提交中。

# 配置用户名,会在提交信息中显示 git config --global user.name "Your Name" # 配置邮箱 git config --global user.email "you@example.com" # 查看所有配置项 git config --list # 查看某一项的配置 git config user.name # 设置默认分支名(Git 2.28+ 推荐设置为 main) git config --global init.defaultBranch main # 设置命令别名,简化操作 git config --global alias.st status git config --global alias.co checkout git config --global alias.br branch git config --global alias.cm 'commit -m'
仓库的创建与克隆
git init
在当前目录创建一个新的 Git 仓库。
# 在当前目录初始化 git init # 指定目录名初始化 git init new-project
git clone
将一个远程仓库完整地复制到本地。
# 克隆整个仓库 git clone https://github.com/user/repo.git # 克隆并指定本地文件夹名 git clone https://github.com/user/repo.git my-project
状态与信息查看
git status
查看工作区、暂存区的状态,告诉你哪些文件被修改了、哪些被暂存了。
# 查看简短状态 git status -s # 输出示例: # M README.md # 文件被修改,但未暂存 # A main.js # 文件已被暂存 # ?? new-file.txt # 文件未被 Git 追踪
git log
查看项目的提交历史。

# 查看详细的提交历史 git log # 查看简化的一行提交历史 git log --oneline # 查看最近 5 条提交 git log -5 # 查看图形化的分支合并历史 git log --graph --oneline --all # 查看某人的提交记录 git log --author="John Doe" # 查看某个文件的修改历史 git log --follow -- filename
git diff
查看文件之间的差异。
# 查看工作区与暂存区之间的差异(未暂存的修改) git diff # 查看暂存区与最新提交之间的差异(已暂存的修改) git diff --staged # 或 git diff --cached # 查看两个提交之间的差异 git diff <commit-hash-1> <commit-hash-2> # 查看两个分支在某个文件上的差异 git diff main feature-branch -- specific-file.txt
代码的暂存与提交
git add
将修改的文件添加到暂存区,是提交前的必要步骤。
# 添加单个文件 git add README.md # 添加所有修改的文件 git add . # 添加所有修改和新建的文件,但不包括被删除的 git add -u # 添加所有修改、新建和删除的文件 git add -A # 交互式地添加文件的某一部分(非常强大!) git add -p
git commit
将暂存区的文件永久保存到本地仓库。
# 创建一个普通提交 git commit -m "feat: add user login functionality" # 提交并包含所有已暂存的修改,跳过暂存区(相当于 git add + commit) git commit -a -m "fix: resolve a typo" # 修改上一次的提交信息(未推送到远程时) git commit --amend # 修改上一次的提交并包含新的文件(例如忘记 add 的文件) git add forgotten_file.txt git commit --amend --no-edit # 保留上次的提交信息
git rm
从 Git 仓库中移除文件。

# 从工作区和暂存区删除文件 git rm filename.txt # 仅从暂存区删除,但保留在工作区(文件内容还在,只是不被 Git 追踪) git rm --cached filename.txt
git mv
移动或重命名文件。
# 重命名文件 git mv old-name.txt new-name.txt # 移动文件到新目录 git mv src/app.js components/
分支管理
分支是 Git 的核心功能,允许你并行开发不同的功能。
git branch
查看、创建、删除分支。
# 查看所有本地分支,当前分支会用 * 标记 git branch # 查看所有分支(包括远程分支) git branch -a # 创建一个新分支 git branch new-feature # 基于当前分支创建并切换到新分支(推荐) git checkout -b new-feature # 删除一个本地分支(必须先切换到其他分支) git branch -d feature-to-delete # 强制删除一个未合并的分支 git branch -D feature-to-delete
git checkout
切换分支或恢复文件。
# 切换到已存在的分支 git checkout main # 创建并切换到新分支(等同于 git branch + checkout) git checkout -b another-feature # 恢复某个文件到最新提交的状态(会覆盖工作区修改) git checkout -- filename.txt
git switch (Git 2.23+)
更现代、更直观的切换分支命令。
# 切换到已存在的分支 git switch main # 创建并切换到新分支 git switch -c my-new-branch # 切换并创建分支,并基于另一个提交 git switch -c bug-fix-branch abc123def
git merge
将指定分支的合并到当前分支。
# 假设你当前在 main 分支,将 feature-branch 合并过来 git checkout main git merge feature-branch # 查看合并信息 git log --merge
与远程仓库交互
远程仓库通常指 GitHub, GitLab, Gitee 等。
git remote
管理远程仓库的别名(默认是 origin)。
# 查看所有远程仓库别名 git remote # 查看远程仓库的详细信息(如 URL) git remote -v # 添加一个新的远程仓库 git remote add upstream https://github.com/original-author/repo.git # 重命名远程仓库别名 git remote rename origin old-origin # 删除一个远程仓库别名 git remote remove upstream
git fetch
从远程仓库获取最新的数据,但不会合并或修改你当前的本地文件。
# 获取所有远程仓库的最新数据 git fetch # 获取特定远程仓库的最新数据 git fetch origin
git pull
相当于 git fetch + git merge,从远程仓库获取最新数据并合并到当前分支。
# 从默认远程仓库(origin)的默认分支(main/master)拉取 git pull # 从特定远程仓库的特定分支拉取 git pull origin feature-branch
git push
将你本地的分支推送到远程仓库。
# 将当前分支推送到远程同名分支 git push # 将本地分支推送到远程仓库,并建立关联关系(首次推送时常用) git push -u origin feature-branch # 强制推送(会覆盖远程分支,慎用!) git push --force
撤销与回退
这是最容易出错的地方,请务必小心操作。
git reset
将 HEAD、暂存区或工作区的指针回退到某个状态,它会修改历史。
# 模式:--soft (只移动 HEAD 指针) # 用途:撤销最后一次提交,但保留修改在暂存区 git reset --soft HEAD~1 # 模式:--mixed (默认,移动 HEAD 和暂存区指针) # 用途:撤销最后一次提交,并将修改放回工作区(未暂存状态) git reset --mixed HEAD~1 # 等同于 git reset HEAD~1 # 模式:--hard (移动 HEAD、暂存区和工作区指针) # 用途:彻底撤销最后一次提交,并丢弃所有修改(危险!) git reset --hard HEAD~1 # 回退到某个特定的提交,之后的所有提交都会被丢弃 git reset --hard <commit-hash>
git revert
创建一个新的提交来撤销某个提交的更改,它不会修改历史,而是添加新的历史。
# 撤销某个提交的更改,并创建一个新的提交 git revert <commit-hash> # 如果撤销的提交与其他提交有冲突,会进入编辑模式让你解决
标签管理
标签通常用于标记重要的版本点,如 v1.0.0。
# 查看所有标签 git tag # 查看符合模式的标签 git tag -l "v1.*" # 创建一个轻量级标签 git tag v1.0.0 # 创建一个带注释的标签(推荐) git tag -a v1.0.1 -m "Version 1.0.1: Add new dashboard" # 查看标签的详细信息 git show v1.0.1 # 推送单个标签到远程仓库 git push origin v1.0.0 # 推送所有标签到远程仓库 git push origin --tags
存储与清理
git stash
当你正在一个分支上工作,但需要切换到另一个分支处理紧急任务时,可以使用 stash 来临时保存你的工作进度。
# 暂存当前工作区的所有修改
git stash
# 暂存时附上说明信息
git stash push -m "WIP: Add user profile page"
# 查看所有存储列表
git stash list
# 应用最近的存储,并将其从列表中移除
git stash pop
# 应用最近的存储,但不移除它
git stash apply
# 删除某个存储
git stash drop stash@{0}
# 清空所有存储
git stash clear
git clean
清理工作区中未被 Git 追踪的文件(危险操作,请谨慎使用)。
# 查看将要被删除的文件(干跑模式) git clean -n # 删除未被追踪的文件,但忽略被 .gitignore 忽略的文件 git clean -f # 删除未被追踪的目录和文件 git clean -df # 强制删除,不进行任何提示(极度危险!) git clean -xdf
这份大全涵盖了 Git 90% 以上的日常使用场景,记住几个核心概念:
- 工作区:你看到和编辑文件的目录。
- 暂存区:一个临时区域,用于存放下次要提交的文件。
- 本地仓库:Git 保存项目元数据和对象数据库的地方。
- 远程仓库:托管在服务器上的仓库,用于多人协作。
工作流通常是:
修改文件 -> git add -> git commit -> git push
多加练习,这些命令很快就会成为你的肌肉记忆!祝你使用愉快!
