源本科技 | 码上会

Git 常用命令

2026/04/09
2
0

引言

Git 是目前最主流的分布式版本控制系统,熟练掌握常用命令是高效使用 Git 的基础。下表为日常开发高频核心命令,覆盖从仓库创建到远程同步的全流程操作。

命令

描述

git init

初始化本地 Git 仓库

git clone

克隆远程 Git 仓库到本地

git add

将工作区文件添加至暂存区

git commit

将暂存区内容提交至本地仓库

git status

查看工作区与暂存区状态

git log

查看本地仓库提交历史

git branch

分支的创建、查看、删除

git checkout

切换分支或恢复工作区文件

git merge

分支合并

git pull

拉取远程仓库代码并合并到本地

git push

将本地仓库提交推送至远程仓库

Git 三大核心区域

在学习命令前,需先理解 Git 的核心工作架构,所有命令均围绕以下 3 个区域交互:

  • 工作区:本地电脑中实际编辑代码的目录

  • 暂存区:临时存放待提交的文件修改

  • 本地仓库:Git 本地存储所有版本历史的区域

  • 远程仓库:云端托管代码的仓库(如 GitHub、Gitee、GitLab)

创建仓库

用于初始化本地仓库或克隆远程已有仓库,是使用 Git 的第一步。

# 在当前目录初始化一个全新的 Git 仓库
git init

# 新建项目目录并初始化为 Git 仓库
git init [project-name]

# 克隆远程仓库(完整拉取所有代码、分支、提交历史)
git clone [remote-url]

Git 配置

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]

文件删除与找回

  1. 仅工作区删除文件:rm [file]

  2. 记录删除操作到暂存区:git add [file]

  3. 提交删除到本地仓库:git commit -m "删除文件"

  4. 找回已删除文件:通过版本回退恢复,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 纠错核心操作。

git reset

# 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]

reset 与 revert

  • 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