Git 是目前最主流的分布式版本控制系统,熟练掌握常用命令是高效使用 Git 的基础。下表为日常开发高频核心命令,覆盖从仓库创建到远程同步的全流程操作。
在学习命令前,需先理解 Git 的核心工作架构,所有命令均围绕以下 3 个区域交互:
工作区:本地电脑中实际编辑代码的目录
暂存区:临时存放待提交的文件修改
本地仓库:Git 本地存储所有版本历史的区域
远程仓库:云端托管代码的仓库(如 GitHub、Gitee、GitLab)
用于初始化本地仓库或克隆远程已有仓库,是使用 Git 的第一步。
# 在当前目录初始化一个全新的 Git 仓库
git init
# 新建项目目录并初始化为 Git 仓库
git init [project-name]
# 克隆远程仓库(完整拉取所有代码、分支、提交历史)
git clone [remote-url]Git 的配置文件为 .gitconfig,分为全局配置(所有项目生效)和项目配置(仅当前项目生效)。
# 查看当前所有 Git 配置
git config --list
# 编辑 Git 配置文件(--global 为全局配置)
git config -e [--global]
# 全局配置提交用户名(必填)
git config --global user.name "[your-name]"
# 全局配置提交邮箱(必填)
git config --global user.email "[your-email]"
# 仅当前项目配置用户名/邮箱
git config user.name "[your-name]"
git config user.email "[your-email]"用于管理工作区文件,将文件变更添加至暂存区,是提交前的核心操作。
# 添加指定文件到暂存区
git add [file1] [file2] ...
# 添加指定目录(包含子目录)到暂存区
git add [dir]
# 添加当前目录所有修改文件到暂存区(最常用)
git add .
# 交互式添加文件,可分次提交同一文件的不同修改
git add -p
# 删除工作区文件,并将删除操作记录到暂存区
git rm [file1] [file2] ...
# 停止追踪文件,但保留工作区中的文件(常用于忽略文件)
git rm --cached [file]
# 重命名文件,并将重命名操作记录到暂存区
git mv [old-file] [new-file]文件删除与找回
仅工作区删除文件:rm [file]
记录删除操作到暂存区:git add [file]
提交删除到本地仓库:git commit -m "删除文件"
找回已删除文件:通过版本回退恢复,Git 会保留所有提交历史,可随时回溯。
将暂存区的文件变更永久记录到本地仓库,生成新的版本节点。
# 提交暂存区内容,附带提交信息
git commit -m "[commit-message]"
# 提交暂存区指定文件到本地仓库
git commit [file1] [file2] ... -m "[commit-message]"
# 自动将已追踪文件的修改提交(跳过 git add,仅适用于已追踪文件)
git commit -a
# 修正上一次提交(覆盖上一次 commit,不生成新节点)
git commit --amend -m "[new-message]"分支是 Git 核心特性,支持多人并行开发、功能独立迭代,互不干扰。
# 查看所有本地分支
git branch
# 查看所有远程分支
git branch -r
# 查看所有本地+远程分支
git branch -a
# 新建分支(停留在当前分支)
git branch [branch-name]
# 新建并切换到该分支(经典命令)
git checkout -b [branch-name]
# Git 2.23+ 推荐:新建并切换分支(更语义化)
git switch -c [branch-name]
# 切换到指定分支
git checkout [branch-name]
git switch [branch-name]
# 切换回上一个分支
git checkout -
git switch -
# 合并指定分支到当前分支
git merge [branch-name]
# 合并指定单次提交到当前分支
git cherry-pick [commit-id]
# 删除本地分支(已合并)
git branch -d [branch-name]
# 强制删除本地分支(未合并)
git branch -D [branch-name]
# 删除远程分支
git push origin --delete [branch-name]标签用于标记重要版本(如发布版本 v1.0.0),是固定的版本快照。
# 查看所有标签
git tag
# 新建轻量标签(当前提交)
git tag [tag-name]
# 新建附注标签(推荐,包含标签信息)
git tag -a [tag-name] -m "[tag-message]"
# 为指定提交创建标签
git tag [tag-name] [commit-id]
# 删除本地标签
git tag -d [tag-name]
# 删除远程标签
git push origin --delete tag [tag-name]
# 推送指定标签到远程
git push origin [tag-name]
# 推送所有本地标签到远程
git push origin --tags用于查看仓库状态、提交历史、文件差异,是排查问题的核心命令。
# 查看工作区与暂存区的文件状态
git status
# 查看完整提交历史
git log
# 查看提交历史及文件变更统计
git log --stat
# 单行精简显示提交历史
git log --pretty=oneline
# 极简显示提交历史(前 7 位 commit-id)
git log --oneline
# 查看最近 N 次提交
git log -5 --oneline
# 查看所有操作记录(包含回退、提交,可找回丢失提交)
git reflog
# 查看工作区与暂存区的文件差异
git diff
# 查看暂存区与本地仓库的差异
git diff --cached
# 查看指定文件的提交人、时间、内容(排查问题)
git blame [file]
# 查看指定提交的详细内容
git show [commit-id]核心查看命令说明
git status:判断文件是否被追踪、是否在暂存区,是提交前必用命令。


git log:展示从当前 HEAD 往前的提交历史,由新到旧排序。


git reflog:记录所有 HEAD 移动操作,版本回退后丢失的提交可通过此命令找回。
git diff:精准对比文件内容差异,定位修改位置。
用于本地仓库与远程仓库的交互,实现团队协作代码共享。
# 查看关联的远程仓库
git remote -v
# 添加远程仓库关联
git remote add [remote-name] [remote-url]
# 仅拉取远程代码,不自动合并
git fetch [remote-name]
# 拉取远程代码并自动合并到当前分支(pull = fetch + merge)
git pull [remote-name] [branch-name]
# 推送本地分支到远程仓库
git push [remote-name] [branch-name]
# 强制推送(谨慎使用,会覆盖远程代码)
git push [remote-name] --force用于撤销工作区、暂存区修改,或回退历史版本,是 Git 纠错核心操作。
# 1. --soft:仅回退 commit,保留暂存区和工作区(推荐修正提交)
git reset --soft [commit-id]
# 2. --mixed(默认):回退 commit + 暂存区,保留工作区
git reset [commit-id]
# 3. --hard:彻底回退 commit + 暂存区 + 工作区(谨慎使用,丢失未提交修改)
git reset --hard [commit-id]

# 撤销暂存区指定文件(回到工作区)
git reset [file]
# Git 2.23+ 推荐:恢复工作区文件
git restore [file]
# 撤销指定提交(生成新提交抵消旧提交,保留历史,推荐团队使用)
git revert [commit-id]git reset:删除提交记录,彻底回退版本,不适合公共分支。
git revert:生成反向提交,保留完整历史,适合远程 / 公共分支。
用于临时存储未提交的修改,切换分支前保存现场。
# 暂存当前工作区所有未提交修改
git stash
# 查看所有暂存记录
git stash list
# 恢复最近一次暂存,并删除该记录
git stash pop
# 恢复最近一次暂存,保留记录
git stash apply
# 删除所有暂存记录
git stash clear# 将项目打包为归档文件
git archive --format zip --output [file-name].zip HEAD