Git作为当前主流的分布式版本控制系统,凭借高效的版本追踪、灵活的分支管理及便捷的多人协作能力,成为研发团队核心工具之一,广泛应用于代码管理、项目迭代等场景。为解决开发过程中命令记忆混乱、查阅低效的问题,本文按Git使用全流程梳理了全量实用命令,涵盖基础配置、仓库操作、版本管理、分支协作、远程同步、进阶技巧等核心场景,每个命令均配套清晰的语法格式、核心作用说明及实战示例,帮助你快速查阅git命令。
温馨提示:命令后的 [可选参数] 表示根据实际场景选择使用,示例中的尖括号 <> 代表需要替换为实际内容(如文件名、分支名),使用时请去掉尖括号。
一、基础配置命令:初始化Git环境(首次使用必配)
这部分命令用于配置Git的基础信息(如用户名、邮箱)、查看配置、设置默认编辑器等,全局配置一次生效,局部配置仅对当前项目有效。
|------------------------------------------|----------------------------------------|-----------------------------------------------------|
| 命令语法 | 核心说明 | 实用示例 |
| git config --global user.name "<用户名>" | 配置全局用户名(提交代码时关联的身份) | git config --global user.name "Li Ming" |
| git config --global user.email "<邮箱>" | 配置全局邮箱(需与远程仓库账号绑定邮箱一致) | git config --global user.email "liming@example.com" |
| git config --global --list | 查看全局配置信息(验证配置是否生效) | git config --global --list |
| git config user.name "<用户名>" | 配置当前项目局部用户名(优先级高于全局) | 进入项目目录后执行:git config user.name "Work Li" |
| git config core.editor "<编辑器命令>" | 设置默认提交编辑器(如VS Code、Vim) | git config --global core.editor "code --wait" |
| git config --global core.autocrlf <参数> | 配置跨平台换行符(Windows用true,Linux/Mac用input) | Windows:git config --global core.autocrlf true |
| git --version | 查看Git版本(验证Git是否安装成功) | git --version(输出示例:git version 2.45.1) |
| git config --global color.ui auto | 开启Git命令行颜色高亮(区分不同信息类型,更易阅读) | git config --global color.ui auto |
| git config --unset --global <配置项> | 删除全局配置项(如误配置用户名/邮箱后清理) | git config --unset --global user.email |
二、仓库操作命令:创建/克隆/初始化仓库
这部分命令用于创建本地仓库、克隆远程仓库,是使用Git管理项目的第一步。
|--------------------------------------|------------------------------------|-------------------------------------------------------------------------------------------------------|
| 命令语法 | 核心说明 | 实用示例 |
| git init [<项目目录>] | 初始化本地仓库(若不指定目录,默认当前目录) | git init git-demo(在当前目录创建git-demo仓库) |
| git clone <远程仓库地址> [<本地目录名>] | 克隆远程仓库到本地(可指定本地目录名,默认与仓库同名) | HTTPS:git clone https://gitee.com/liming/git-demo.git SSH:git clone git@gitee.com:liming/git-demo.git |
| git status | 查看当前仓库文件状态(未跟踪/已暂存/已修改等) | git status(日常高频使用,提交前必查) |
| git add <文件/目录> | 将文件/目录添加到暂存区(单个文件/目录) | git add README.md(添加单个文件) git add src/(添加src目录所有修改) |
| git add . | 将当前目录下所有修改(新增/修改/删除)添加到暂存区(最常用) | git add .(提交前快速暂存所有变更) |
| git add -p | 交互式添加修改(逐行选择要暂存的内容,精准控制) | git add -p(修改较多时,避免暂存无用内容) |
| git commit -m "<提交说明>" | 将暂存区内容提交到本地仓库(必须填写提交说明) | git commit -m "feat: 新增登录功能核心代码" |
| git commit -am "<提交说明>" | 跳过暂存区,直接提交已跟踪文件的修改(新增文件无效) | git commit -am "fix: 修复登录按钮点击无响应问题" |
| git commit --amend | 修改上一次的提交说明(或补充遗漏的暂存修改) | git commit --amend(执行后进入编辑器修改提交信息) |
| git add -u | 添加已跟踪文件的修改和删除(不包含新增未跟踪文件) | git add -u(仅暂存已跟踪文件的变更) |
| git commit --allow-empty -m "<说明>" | 创建空提交(用于触发远程CI/CD流程或标记重要节点) | git commit --allow-empty -m "ci: 触发自动部署流程" |
| git rm <文件名> | 删除文件并将删除操作添加到暂存区(同时删除工作区和暂存区文件) | git rm test.txt(删除test.txt并暂存) |
| git rm --cached <文件名> | 将文件从暂存区移除(保留工作区文件,变为未跟踪状态) | git rm --cached .env(取消.env文件的跟踪,保留本地文件) |
| git mv <原文件名> <新文件名> | 重命名文件/目录,并将变更添加到暂存区(等价于mv+git add) | git mv login.py user_login.py(重命名文件并暂存) |
三、版本管理命令:回溯/撤销/查看历史版本
这部分命令用于查看提交历史、回溯到历史版本、撤销未提交的修改,是解决代码错误、恢复稳定版本的核心命令。
|---------------------------------------|---------------------------------------------|-----------------------------------------------------------------------------------------------|
| 命令语法 | 核心说明 | 实用示例 |
| git log [可选参数] | 查看提交历史(默认显示所有提交,可选参数简化输出) | git log --oneline(简化输出,只显示版本号前7位+说明) git log -n 3(查看最近3次提交) git log --graph(图形化显示提交历史,分支合并清晰) |
| git reflog | 查看所有操作记录(包括已回溯、删除的版本,用于恢复) | git reflog(误删分支/提交后,通过此命令找版本号恢复) |
| git reset --hard <版本号/分支名> | 强制回溯到目标版本(工作区/暂存区/本地仓库均同步,未提交修改丢失) | git reset --hard a1b2c3d(回溯到版本号为a1b2c3d的版本) |
| git reset --mixed <版本号/分支名> | 默认回溯模式(本地仓库同步,暂存区回溯,工作区修改保留) | git reset a1b2c3d(省略--mixed,默认执行此模式) |
| git reset --soft <版本号/分支名> | 软回溯(本地仓库同步,暂存区和工作区修改均保留) | git reset --soft HEAD~1(回溯到上一个版本,保留所有修改) |
| git checkout -- <文件名> | 撤销工作区未暂存的修改(恢复到上一次提交状态,不可逆) | git checkout -- login.py(撤销login.py的未暂存修改) |
| git checkout . | 撤销当前目录下所有未暂存的修改 | git checkout .(谨慎使用,避免误删有用修改) |
| git reset HEAD <文件名/目录> | 将暂存区的修改回退到工作区(取消暂存) | git reset HEAD README.md(取消README.md的暂存状态) |
| git checkout <版本号> <文件名> | 查看历史版本的指定文件(不修改当前版本,临时查看) | git checkout a1b2c3d README.md(查看历史版本的README.md) |
| git log --author=<作者名/邮箱> | 查看指定作者的提交历史(多人协作时定位特定作者提交) | git log --author=Li Ming git log --author=liming@example.com |
| git log --since=<时间> --until=<时间> | 查看指定时间范围内的提交历史(按时间筛选提交) | git log --since=2024-01-01 --until=2024-01-31(查看1月提交) git log --since=1.weeks(查看最近1周提交) |
| git log <分支1>..<分支2> | 查看分支2比分支1多的提交(未合并到分支1的提交) | git log main..feature/login(查看登录分支比主分支多的提交) |
| git revert <版本号> | 撤销指定版本的提交(生成新提交,不修改历史,适合已推远程分支) | git revert a1b2c3d(撤销a1b2c3d版本的修改,生成新提交) |
| git checkout HEAD~<n> | 切换到当前版本的前n个版本(临时查看历史版本,处于 detached HEAD 状态) | git checkout HEAD~1(切换到上一个版本) |
警告:git reset --hard 和 git checkout -- <文件名> 会永久删除未提交的修改,执行前务必确认无有用内容需要保留!
四、分支操作命令:创建/切换/合并/删除分支
分支是Git多人协作的核心,这部分命令涵盖分支的创建、切换、合并、冲突解决、删除等全流程操作。
|---------------------------------------------------------|----------------------------------------------------------|--------------------------------------------------------------|
| 命令语法 | 核心说明 | 实用示例 |
| git branch [<分支名>] | 查看所有分支(*表示当前分支),或创建新分支(不切换) | git branch(查看分支) git branch feature/login(创建feature/login分支) |
| git checkout <分支名> | 切换到指定分支(切换前需提交当前分支修改) | git checkout feature/login(切换到登录功能分支) |
| git checkout -b <分支名> | 创建并切换到新分支(最常用,一步完成创建+切换) | git checkout -b bugfix/btn-error(创建并切换到bug修复分支) |
| git merge <待合并分支名> | 将待合并分支的修改合并到当前分支(合并前建议切换到目标分支) | git checkout main git merge feature/login(将登录分支合并到主分支) |
| git merge --abort | 合并冲突时,放弃合并,恢复到合并前状态 | git merge --abort(冲突无法解决时使用) |
| git branch -d <分支名> | 删除已合并的分支(未合并分支无法删除,避免误删) | git branch -d feature/login(删除已合并的登录分支) |
| git branch -D <分支名> | 强制删除分支(无论是否合并,谨慎使用) | git branch -D feature/old-function(强制删除废弃分支) |
| git branch -m <旧分支名> <新分支名> | 重命名分支(当前未处于被重命名分支时需指定旧分支名) | git branch -m feature/login feature/user-login(重命名分支) |
| git checkout -b <本地分支名> origin/<远程分支名> | 拉取远程分支并创建本地分支(本地无对应分支时使用) | git checkout -b feature/pay origin/feature/pay |
| git branch -vv | 查看分支关联的远程分支(显示本地分支与远程分支的映射关系) | git branch -vv(查看所有分支的远程关联情况) |
| git checkout -t origin/<远程分支名> | 跟踪远程分支并创建本地分支(等价于git checkout -b <分支名> origin/<分支名>) | git checkout -t origin/feature/pay |
| git merge --no-ff <待合并分支名> | 禁止快速合并,强制生成合并提交(保留分支合并历史,便于回溯) | git merge --no-ff feature/login(强制生成合并提交) |
| git rebase -i <版本号/HEAD~n> | 交互式变基(合并多个提交、修改提交说明、删除提交等,美化历史) | git rebase -i HEAD~3(交互式修改最近3个提交) |
| git branch --set-upstream-to=origin/<远程分支名> <本地分支名> | 绑定本地分支与远程分支(未绑定上游分支时使用,方便push/pull) | git branch --set-upstream-to=origin/main main |
五、远程仓库协作命令:推送/拉取/同步代码
多人协作需借助远程仓库(GitHub/Gitee/GitLab),这部分命令用于关联远程仓库、推送本地代码、拉取远程代码、解决同步冲突等。
|------------------------------------------------|-----------------------------------------|-------------------------------------------------------------------|
| 命令语法 | 核心说明 | 实用示例 |
| git remote add <远程别名> <远程仓库地址> | 关联远程仓库(别名通常用origin,方便后续简化命令) | git remote add origin git@gitee.com:liming/git-demo.git |
| git remote -v | 查看远程仓库关联信息(验证关联是否成功,显示fetch/push地址) | git remote -v |
| git remote rename <旧别名> <新别名> | 重命名远程仓库别名 | git remote rename origin gitee(将origin改为gitee) |
| git remote remove <远程别名> | 删除远程仓库关联 | git remote remove origin(取消与远程仓库的关联) |
| git push -u <远程别名> <本地分支名> | 首次推送本地分支到远程(-u绑定上游分支,后续可简化为git push) | git push -u origin main(首次推送主分支到远程) |
| git push [<远程别名> <本地分支名>] | 推送本地分支修改到远程仓库(已绑定上游分支可省略参数) | git push(已绑定上游分支,简化推送) git push origin feature/login(推送指定分支) |
| git pull [<远程别名> <远程分支名>] | 拉取远程分支最新代码并自动合并到本地当前分支(常用) | git pull(已绑定上游分支,简化拉取) git pull origin main(拉取远程主分支代码) |
| git fetch [<远程别名> <远程分支名>] | 拉取远程分支最新代码到本地临时分支(不自动合并,先查看差异) | git fetch origin main(拉取远程主分支代码) git diff origin/main(查看远程与本地的差异) |
| git push origin --delete <远程分支名> | 删除远程仓库的指定分支(分支废弃后清理远程分支) | git push origin --delete feature/old-function |
| git merge origin/<远程分支名> | 将远程分支的修改合并到本地当前分支(fetch后手动合并) | git fetch origin main git merge origin/main |
| git remote show <远程别名> | 查看远程仓库详细信息(包含分支映射、最新提交等) | git remote show origin |
| git fetch --all | 拉取所有远程仓库的所有分支最新代码(多远程仓库/多分支时使用) | git fetch --all |
| git push --force-with-lease <远程别名> <本地分支名> | 安全强制推送(覆盖远程分支,先检查远程是否有未拉取修改,比--force安全) | git push --force-with-lease origin main(谨慎使用,适合变基后推送) |
| git push origin --tags | 将本地所有标签一次性推送到远程仓库(版本发布时同步所有标签) | git push origin --tags |
| git pull --rebase <远程别名> <远程分支名> | 拉取远程代码并执行变基合并(避免生成合并提交,保持历史整洁) | git pull --rebase origin main |
六、进阶技巧命令:提升效率的实用操作
掌握这些进阶命令,能大幅提升Git使用效率,解决复杂场景下的问题(如暂存修改、美化提交历史、定位问题代码等)。
|-----------------------------------------|--------------------------------------|---------------------------------------------------------------------------------------|
| 命令语法 | 核心说明 | 实用示例 |
| git stash | 暂存当前工作区和暂存区的修改(未提交的修改,方便切换分支) | git stash(临时暂存开发中的修改) |
| git stash list | 查看所有暂存记录(stash@{0}为最新暂存,序号递增) | git stash list(查看暂存的所有修改记录) |
| git stash pop [stash@{n}] | 恢复指定暂存记录(默认恢复最新的stash@{0},恢复后删除暂存记录) | git stash pop(恢复最新暂存) git stash pop stash@{1}(恢复第2条暂存记录) |
| git stash apply [stash@{n}] | 恢复指定暂存记录(恢复后不删除暂存记录,可多次恢复) | git stash apply stash@{0} |
| git stash drop [stash@{n}] | 删除指定暂存记录(无需恢复,清理无用暂存) | git stash drop stash@{0}(删除最新暂存记录) |
| git stash clear | 清空所有暂存记录(谨慎使用,一次性删除所有暂存) | git stash clear |
| git rebase <目标分支名> | 变基操作,将当前分支的提交嫁接到目标分支最新提交上(美化提交历史) | git checkout feature/login git rebase main(将登录分支变基到主分支) |
| git rebase --continue | 变基冲突解决后,继续执行变基操作 | 解决冲突后执行:git add . && git rebase --continue |
| git rebase --abort | 放弃变基操作,恢复到变基前的状态 | git rebase --abort(冲突无法解决时放弃变基) |
| git cherry-pick <版本号> | 将某个分支的单个提交复制到当前分支(无需合并整个分支) | git cherry-pick a1b2c3d(复制a1b2c3d这个提交到当前分支) |
| git tag [<版本号>] | 查看所有标签,或给当前提交打标签(用于版本发布) | git tag v1.0.0(给当前提交打v1.0.0版本标签) git tag(查看所有标签) |
| git push <远程别名> <标签名> | 将本地标签推送到远程仓库(版本发布后同步标签) | git push origin v1.0.0(推送v1.0.0标签到远程) |
| git blame <文件名> | 查看文件每一行的修改记录(谁修改、时间、提交说明,定位问题代码) | git blame login.py(查看login.py的每行修改记录) |
| git diff [<分支名1> <分支名2>] | 查看两个分支(或工作区与暂存区、本地与远程)的代码差异 | git diff main feature/login(查看主分支与登录分支的差异) git diff(查看工作区与暂存区的差异) |
| git stash save "<暂存说明>" | 暂存修改并添加说明(便于后续区分不同暂存记录) | git stash save "开发登录功能中途暂存" |
| git stash branch <新分支名> [stash@{n}] | 从暂存记录创建新分支(恢复暂存修改到新分支,适合暂存修改需单独开发) | git stash branch feature/temp stash@{0} |
| git cherry-pick -n <版本号> | 复制提交但不自动提交(可多次cherry-pick后合并提交) | git cherry-pick -n a1b2c3d git cherry-pick -n c4d5e6f git commit -m "feat: 合并多个提交的修改" |
| git cherry-pick --abort | cherry-pick冲突时放弃操作,恢复到操作前状态 | git cherry-pick --abort |
| git tag -d <标签名> | 删除本地标签(标签打错或废弃时清理) | git tag -d v1.0.0 |
| git push origin --delete <标签名> | 删除远程标签(本地标签删除后同步到远程) | git push origin --delete v1.0.0 |
| git tag -a <标签名> -m "<标签说明>" | 创建带说明的附注标签(比轻量标签更规范,适合版本发布) | git tag -a v1.0.0 -m "正式发布v1.0.0版本" |
| git diff --cached [<分支名>] | 查看暂存区与本地仓库(或指定分支)的代码差异 | git diff --cached(暂存区与本地仓库差异) git diff --cached main(暂存区与主分支差异) |
| git show <版本号/标签名> | 查看指定版本/标签的详细信息(包含提交说明、修改内容) | git show a1b2c3d git show v1.0.0 |
技巧:git rebase 仅建议在本地分支使用,不要对已推送到远程的分支执行变基(会修改提交历史,导致团队协作冲突)!
七、常用场景命令组合:直接套用的实战模板
整理了日常开发中最常见的场景,直接套用以下命令组合,高效完成操作。
场景1:新建本地项目,关联远程仓库并推送
bash
# 1. 新建项目目录并进入
mkdir git-demo && cd git-demo
# 2. 初始化本地仓库
git init
# 3. 新建文件并提交
echo "# Git命令大全" > README.md
git add .
git commit -m "feat: 初始化项目,添加README.md"
# 4. 关联远程仓库
git remote add origin git@gitee.com:liming/git-demo.git
# 5. 首次推送主分支
git push -u origin main
场景2:克隆远程仓库,开发新功能并合并
bash
# 1. 克隆远程仓库到本地
git clone git@gitee.com:liming/git-demo.git
cd git-demo
# 2. 创建并切换到功能分支
git checkout -b feature/pay
# 3. 开发功能,提交修改
# (编写代码后)
git add .
git commit -m "feat: 实现支付功能,支持微信/支付宝"
# 4. 切换回主分支,拉取最新代码(避免冲突)
git checkout main
git pull
# 5. 合并功能分支到主分支
git merge feature/pay
# 6. 推送合并后的代码到远程
git push
场景3:修复线上bug,紧急合并到主分支
bash
# 1. 切换到主分支,拉取最新线上代码
git checkout main
git pull
# 2. 创建bug修复分支
git checkout -b bugfix/login-error
# 3. 修复bug,提交修改
git add .
git commit -m "fix: 修复登录时手机号格式校验错误问题"
# 4. 切换回主分支,合并修复分支
git checkout main
git merge bugfix/login-error
# 5. 推送修复后的代码到远程
git push
# 6. 删除bug修复分支(已合并,无需保留)
git branch -d bugfix/login-error
场景4:开发中临时切换分支,暂存当前修改
bash
# 1. 正在feature/dev分支开发,突然需要切换到main分支
# 暂存当前未提交的修改
git stash
# 2. 切换到main分支,处理紧急任务
git checkout main
# (处理完紧急任务后)
# 3. 切换回开发分支,恢复暂存的修改
git checkout feature/dev
git stash pop
# 4. 继续开发,提交修改
git add .
git commit -m "feat: 完成用户信息展示功能"
git push origin feature/dev
八、命令速记口诀(新手必备)
为了方便大家记忆核心命令,整理了几句简单口诀,日常使用时快速回忆:
-
初始化:
git init建仓库,git clone拉远程; -
提代码:
add暂存,commit提交,push推远程; -
分支操:
checkout -b建分支,merge合并,-d删除; -
回退改:
reset --hard回版本,checkout --撤修改; -
临时存:
stash暂存,pop恢复,list查看; -
查信息:
status看状态,log看历史,diff看差异; -
标签管:
tag打标签,push推标签,-d删标签; -
远程操:
remote关联仓,fetch拉代码,pull --rebase变基合。
九、总结
这篇Git命令大全已补充完整高频实用命令,涵盖基础配置、仓库操作、版本管理、分支操作、远程协作、进阶技巧六大核心场景,从新手必备到老手常用均有覆盖,真正实现"一站式查阅"。Git的核心是"多实操、多练习",建议大家将这篇博客收藏,日常开发中遇到忘记的命令随时翻看,久而久之就能熟练掌握,无需刻意记忆。
需要注意的是,Git命令虽多,但核心常用的也就20个左右(如add、commit、push、pull、checkout、merge等),新手先掌握核心命令,再逐步熟悉进阶命令即可。如果遇到复杂问题,可通过 git --help <命令名> 查看官方文档(如git --help reset),或留言交流~
如果这篇命令大全对你有帮助,欢迎点赞、收藏、转发,也欢迎在评论区分享你的Git使用技巧和常用命令组合!