Git 命令大全(带详细说明)

一、基础配置

用户信息配置

设置用户名

git config --global user.name "你的名字"

说明:设置全局用户名,这个信息会出现在每次的提交记录中

设置邮箱

git config --global user.email "你的邮箱"

说明:设置全局邮箱,与用户名一起标识提交者身份

查看配置信息

git config --list

说明:显示当前Git的所有配置信息,包括用户信息、别名、编辑器等

设置默认编辑器

git config --global core.editor "vim"

说明:设置Git默认使用的文本编辑器,用于编写提交信息等

配置别名(简化命令)

git config --global alias.co checkout

说明:为checkout命令设置别名co,之后可以用 git co 代替 git checkout

git config --global alias.br branch

说明:为branch命令设置别名br

git config --global alias.ci commit

说明:为commit命令设置别名ci

git config --global alias.st status

说明:为status命令设置别名st

二、仓库操作

创建/克隆仓库

初始化新仓库

git init

说明:在当前目录创建一个新的Git仓库,生成.git隐藏文件夹

克隆远程仓库

git clone <仓库地址>

说明:从远程服务器复制一个完整的仓库到本地

git clone <仓库地址> <本地目录名>

说明:克隆远程仓库并保存到指定名称的本地目录中

克隆指定分支

git clone -b <分支名> <仓库地址>

说明:只克隆远程仓库的特定分支,而不是所有分支

三、基本操作

文件状态与添加

查看文件状态

git status

说明:显示工作目录和暂存区的状态,查看哪些文件被修改、暂存等

git status -s # 简洁模式

说明:以简洁格式显示文件状态,每个文件只显示一行

添加文件到暂存区

git add <文件名>

说明:将指定文件的修改添加到暂存区,准备提交

git add . # 添加所有文件

说明:将当前目录下所有文件的修改(包括新增和修改)添加到暂存区

git add -A # 添加所有变化(包括删除)

说明:添加所有变化,包括文件删除、新增、修改,等同于 git add --all

git add -p # 交互式添加

说明:交互式地选择文件中哪些修改要添加到暂存区,可以分块提交

移除文件

git rm <文件名>

说明:从工作目录和暂存区中删除文件

git rm --cached <文件名> # 仅从暂存区移除,保留文件

说明:只从暂存区删除文件,但保留工作目录中的文件(变为未跟踪状态)

提交更改

提交暂存区文件

git commit -m "提交说明"

说明:将暂存区的所有修改保存到仓库历史中,并附上说明信息

跳过暂存区直接提交(仅对已跟踪文件)

git commit -a -m "提交说明"

说明:自动将所有已跟踪文件的修改添加到暂存区并提交,相当于 git add + git commit

修改最后一次提交

git commit --amend -m "新的提交说明"

说明:修改最近一次提交的说明信息

增加改动到最后一次提交

git commit --amend --no-edit

说明:将暂存区的新改动合并到最近一次提交中,不修改提交说明

四、分支管理

分支操作

查看分支

git branch # 本地分支

说明:列出所有本地分支,当前分支会用*标记

git branch -r # 远程分支

说明:列出所有远程仓库的分支

git branch -a # 所有分支

说明:列出所有本地和远程分支

创建分支

git branch <分支名>

说明:创建一个新分支,但不会自动切换到该分支

git checkout -b <分支名> # 创建并切换

说明:创建新分支并立即切换到该分支

切换分支

git checkout <分支名>

说明:切换到指定的已有分支

git switch <分支名> # 新版命令

说明:Git 2.23+ 版本提供的新命令,专门用于切换分支

合并分支

git merge <分支名> # 合并到当前分支

说明:将指定分支的修改合并到当前所在分支

git merge --no-ff <分支名> # 禁用快进模式

说明:强制创建一个新的合并提交,即使可以快进合并也不使用快进模式

删除分支

git branch -d <分支名> # 删除本地分支

说明:删除已合并的本地分支,如果分支未合并会提示错误

git branch -D <分支名> # 强制删除

说明:强制删除本地分支,即使分支尚未合并

git push origin --delete <分支名> # 删除远程分支

说明:删除远程仓库中的指定分支

重命名分支

git branch -m <旧名> <新名>

说明:重命名本地分支名称

五、查看历史

日志查看

查看提交历史

git log

说明:显示完整的提交历史记录,包括提交ID、作者、日期和提交说明

git log --oneline # 简洁格式

说明:每个提交只显示一行,包括简短的提交ID和提交说明

git log --graph # 图形化显示

说明:用ASCII图形显示分支和合并历史

git log -p # 显示具体改动

说明:显示每个提交的具体修改内容(差异)

git log --author="作者名" # 按作者过滤

说明:只显示指定作者的提交记录

查看特定文件的修改历史

git log -p <文件名>

说明:显示指定文件的详细修改历史

查看某次提交详情

git show <commit-id>

说明:显示指定提交的详细信息,包括修改内容

查看最近n次提交

git log -n 5

说明:只显示最近的5次提交记录

统计每个作者的提交数

git shortlog -sn

说明:按作者分组统计提交数量,-s显示数量,-n按数量排序

六、远程仓库

远程操作

查看远程仓库

git remote -v

说明:显示所有配置的远程仓库及其URL地址

添加远程仓库

git remote add origin <仓库地址>

说明:添加一个新的远程仓库,命名为origin

删除远程仓库

git remote remove origin

说明:删除名为origin的远程仓库配置

重命名远程仓库

git remote rename <旧名> <新名>

说明:重命名远程仓库的名称

推送代码

git push origin <分支名>

说明:将本地分支的提交推送到远程仓库的同名分支

git push -u origin <分支名> # 设置上游分支

说明:推送并建立本地分支与远程分支的关联关系,之后可以直接用git push

git push --all # 推送所有分支

说明:将所有本地分支推送到远程仓库

git push --tags # 推送所有标签

说明:将所有本地标签推送到远程仓库

拉取代码

git pull origin <分支名>

说明:从远程仓库获取更新并合并到当前分支

git pull --rebase # 使用rebase方式拉取

说明:获取远程更新后使用rebase而不是merge,保持线性历史

获取远程更新(不合并)

git fetch origin

说明:从远程仓库获取更新,但不自动合并到当前分支

git fetch --all # 获取所有远程更新

说明:从所有配置的远程仓库获取更新

七、撤销与回退

撤销操作

撤销工作区的修改

git checkout -- <文件名>

说明:丢弃工作区中指定文件的修改,恢复到最近一次提交的状态

git restore <文件名> # 新版命令

说明:Git 2.23+ 版本的新命令,用于恢复工作区的文件

撤销暂存区的文件

git reset HEAD <文件名>

说明:将文件从暂存区移出,但保留工作区的修改

git restore --staged <文件名> # 新版命令

说明:将文件从暂存区移出的新版命令

撤销提交

git reset --soft HEAD^ # 撤销commit,保留修改

说明:撤销最近一次提交,但保留所有修改在暂存区

git reset --mixed HEAD^ # 撤销commit和add,保留修改

说明:撤销最近一次提交和暂存,但保留工作区的修改

git reset --hard HEAD^ # 彻底撤销到上一个版本

说明:彻底撤销最近一次提交,丢弃所有修改(危险操作)

回退到指定版本

git reset --hard <commit-id>

说明:将整个仓库回退到指定的提交版本,丢弃之后的所有修改

撤销远程提交(强制推送)

git push -f origin <分支名>

说明:强制推送本地版本到远程,覆盖远程的历史(谨慎使用)

回退某个文件到指定版本

git checkout <commit-id> -- <文件名>

说明:将指定文件恢复到历史某个版本的状态

八、标签管理

标签操作

创建标签

git tag <标签名>

说明:为当前提交创建一个轻量标签

git tag -a <标签名> -m "说明" # 附注标签

说明:创建一个包含额外信息的附注标签

查看标签

git tag

说明:列出所有标签

git tag -l "v1.*" # 匹配查找

说明:查找匹配模式的标签,如所有v1开头的标签

推送标签

git push origin <标签名>

说明:将指定标签推送到远程仓库

git push --tags

说明:将所有本地标签推送到远程仓库

删除标签

git tag -d <标签名>

说明:删除本地标签

git push origin :refs/tags/<标签名> # 删除远程标签

说明:删除远程仓库中的标签

切换到标签

git checkout <标签名>

说明:切换到标签对应的版本(会进入分离HEAD状态)

九、贮藏与清理

Stash操作

贮藏当前修改

git stash

说明:临时保存工作目录和暂存区的修改,恢复到一个干净的工作目录

git stash save "说明"

说明:贮藏并添加说明信息,方便识别

查看贮藏列表

git stash list

说明:显示所有贮藏的记录

应用贮藏

git stash apply # 应用最近贮藏

说明:应用最近的贮藏,但不删除贮藏记录

git stash apply stash@{2} # 应用指定贮藏

说明:应用指定的贮藏记录

弹出贮藏(应用并删除)

git stash pop

说明:应用最近的贮藏并从贮藏列表中删除

删除贮藏

git stash drop stash@{0}

说明:删除指定的贮藏记录

git stash clear # 清空所有贮藏

说明:删除所有贮藏记录

查看贮藏内容

git stash show -p stash@{0}

说明:显示指定贮藏的具体修改内容

十、比较差异

Diff操作

查看工作区与暂存区差异

git diff

说明:显示工作目录中尚未暂存的修改

查看暂存区与最新提交差异

git diff --staged

说明:显示已暂存但尚未提交的修改

git diff --cached

说明:与--staged相同,显示暂存区的变化

查看工作区与最新提交差异

git diff HEAD

说明:显示工作目录与最近一次提交的所有差异

查看两个分支差异

git diff <分支1> <分支2>

说明:比较两个分支的最新提交之间的差异

查看两个提交差异

git diff <commit-id1> <commit-id2>

说明:比较两个指定提交之间的差异

查看指定文件的差异

git diff -- <文件名>

说明:只显示指定文件的差异比较

十一、高级操作

Rebase

变基操作

git rebase <分支名>

说明:将当前分支的提交移动到目标分支的最新提交之后

git rebase --continue # 解决冲突后继续

说明:解决冲突后继续执行rebase操作

git rebase --abort # 取消变基

说明:完全取消rebase操作,回到开始前的状态

git rebase --skip # 跳过当前提交

说明:跳过引起冲突的提交,不应用该提交的修改

交互式变基

git rebase -i HEAD~3 # 修改最近3次提交

说明:交互式地重新整理最近3次提交,可以合并、修改、删除提交

Cherry-pick

捡取指定提交到当前分支

git cherry-pick <commit-id>

说明:将指定的提交应用到当前分支

git cherry-pick <commit-id1> <commit-id2>

说明:将多个指定的提交应用到当前分支

git cherry-pick --continue # 解决冲突后继续

说明:解决冲突后继续cherry-pick操作

git cherry-pick --abort # 取消捡取

说明:取消整个cherry-pick操作

十二、子模块

Submodule操作

添加子模块

git submodule add <仓库地址> <路径>

说明:添加一个外部仓库作为当前仓库的子模块

初始化子模块

git submodule init

说明:初始化子模块配置文件

git submodule update

说明:更新子模块到指定的提交

克隆包含子模块的项目

git clone --recursive <仓库地址>

说明:克隆项目并同时初始化和更新所有子模块

更新子模块

git submodule update --remote

说明:将子模块更新到远程仓库的最新提交

十三、常用技巧

实用命令

搜索代码

git grep "搜索内容"

说明:在工作目录中搜索指定内容

查看文件 blame 信息

git blame <文件名>

说明:显示文件中每一行的最后提交者、提交时间和提交ID

查看所有提交中的字符串

git log -S "搜索内容"

说明:搜索提交历史中新增或删除了指定字符串的提交

查看每次提交的文件列表

git log --stat

说明:显示每次提交所修改的文件列表和统计信息

生成压缩包

git archive --format=zip HEAD > archive.zip

说明:将当前版本的文件打包成zip压缩包

垃圾回收

git gc

说明:优化本地仓库,清理不必要的文件,压缩文件版本

检查文件完整性

git fsck

说明:检查Git仓库的对象完整性和一致性

十四、忽略文件

.gitignore 常用模式

创建 .gitignore 文件

echo "node_modules/" >> .gitignore

说明:将node_modules目录添加到忽略列表

echo ".env" >> .gitignore

说明:将.env文件添加到忽略列表

echo "*.log" >> .gitignore

说明:将所有.log文件添加到忽略列表

强制添加被忽略的文件

git add -f <文件名>

说明:强制添加一个被.gitignore规则忽略的文件

查看被忽略的文件

git status --ignored

说明:显示所有被.gitignore忽略的文件

常用工作流程

日常开发流程

更新代码

git pull

说明:从远程仓库获取最新代码并合并

创建功能分支

git checkout -b feature/new-feature

说明:创建并切换到新功能分支

开发完成后提交

git add .

说明:添加所有修改到暂存区

git commit -m "完成新功能开发"

说明:提交暂存区的修改

合并到主分支

git checkout main

说明:切换回主分支

git pull

说明:更新主分支到最新

git merge feature/new-feature

说明:将功能分支的修改合并到主分支

推送到远程

git push origin main

说明:将主分支的更新推送到远程仓库

删除本地分支

git branch -d feature/new-feature

说明:删除已完成合并的功能分支

紧急修复流程

从主分支创建修复分支

git checkout main

说明:切换到主分支

git checkout -b hotfix/critical-bug

说明:创建并切换到紧急修复分支

修复并提交

git add .

说明:添加修复的修改

git commit -m "修复紧急bug"

说明:提交修复

合并到主分支

git checkout main

说明:切换回主分支

git merge --no-ff hotfix/critical-bug

说明:合并修复分支,保留分支历史

打标签

git tag -a v1.0.1 -m "紧急修复版本"

说明:为这次修复创建版本标签

推送

git push --tags

说明:推送所有标签

git push origin main

说明:推送主分支的更新

命令速查表

常用命令组合

操作场景 命令 说明
开始工作 git pull 获取最新代码
新功能 git checkout -b feature/xxx 创建功能分支
提交代码 git add . + git commit -m "msg" 添加并提交
推送代码 git push 推送到远程
撤销本地修改 git checkout -- <file> 丢弃工作区修改
撤销暂存 git reset HEAD <file> 取消暂存
查看历史 git log --oneline --graph 查看简洁历史
比较差异 git diff 查看未暂存的修改

常用参数说明

  • -m:提交信息(message)

  • -a:所有已跟踪文件(all)

  • -d:删除(delete)

  • -f:强制(force)

  • -v:详细(verbose)

  • -p:分块/补丁(patch)

  • --amend:修改最后一次提交

  • --stat:显示统计信息

  • --oneline:单行显示

  • --graph:图形化显示

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~END~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

相关推荐
念一不念二2 小时前
【Git】命令行使用操作
git
zhangfeng11332 小时前
平替 Claude Code 类似的开源项目 — GitHub Star 前十排名
开源·github·claude code
念一不念二2 小时前
【vscode】Git的中好用的命令和技巧
git
DogDaoDao3 小时前
【GitHub】Warp 终端深度解析:Rust + GPU 加速的 AI 原生终端开源架构
人工智能·程序员·rust·开源·github·ai编程·warp
kyriewen14 小时前
奥特曼借GPT-5.5干杯,而你的Copilot正按Token收钱
前端·github·openai
带娃的IT创业者14 小时前
Git commands I run before reading any code
git·开发工具·版本控制·编程技巧·代码审查
九成宫15 小时前
Git 与远程仓库实操记录:克隆、配置、分支推送与问题排查
笔记·git·ssh
jinanwuhuaguo16 小时前
(第三十三篇)五月的文明奠基:OpenClaw 2026.5.2版本的文明级解读
android·java·开发语言·人工智能·github·拓扑学·openclaw
DogDaoDao17 小时前
【GitHub】andrej-karpathy-skills:让 AI 编程助手告别三大通病
人工智能·深度学习·程序员·大模型·github·ai编程·andrej-karpathy