Git 命令速查表

本文按使用场景分类整理,涵盖日常开发到高级操作的全部常用 Git 命令,方便日常开发时对照使用。

一、仓库初始化与配置

命令

使用说明

git init

在当前目录初始化一个新的 Git 仓库,会生成一个隐藏的 .git 目录

git clone <仓库地址>

将远程仓库克隆(下载)到本地

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

配置全局用户名(对所有仓库生效)

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

配置全局邮箱

git config user.name "名字"

配置当前仓库的用户名(仅对当前项目生效)

git config user.email "邮箱"

配置当前仓库的邮箱

git config --list

查看所有已配置的 Git 配置项

 

二、日常提交操作(核心工作流)

命令

使用说明

git status

查看当前工作区和暂存区的状态(有哪些修改、新增、删除或未跟踪的文件)

git add <文件名>

将指定文件添加到暂存区(准备提交)

git add .

将当前目录下所有修改和新增的文件一次性添加到暂存区

git commit -m "提交信息"

将暂存区的内容正式提交到本地仓库,并附带一条说明信息

git commit --amend

修改最近一次的提交信息或追加内容(适用于还没推送到远程的提交)

git diff

查看工作区与暂存区之间的差异(即修改了但还没 add 的内容)

git diff --staged

查看暂存区与本地版本库之间的差异(即已 add 但还没 commit 的内容)

git log

查看提交历史记录

git log --oneline

单行显示提交历史

git log --graph

图形化显示分支提交历史

git log -p <file>

显示指定文件相关的每一次代码差异(diff)

git log -S <关键词>

搜索提交历史,查找引入或删除了某个特定字符串的提交记录

 

三、分支管理

命令

使用说明

git branch

查看本地所有分支

git branch -a

查看所有分支(包含本地和远程分支)

git branch -r

列出所有远程跟踪分支

git branch <分支名>

创建一个新分支

git checkout <分支名>

切换到指定的分支

git switch <分支名>

切换到指定的分支(git switch 的新写法)

git checkout -b <分支名>

创建并立即切换到新分支

git checkout -b <本地分支名> origin/<远程分支名>

基于远程分支创建并切换到本地分支,并建立跟踪关系

git merge <分支名>

将指定的分支合并到当前所在的分支

git rebase <分支名>

变基操作,重写提交历史使其保持线性(比 merge 更整洁,但需谨慎使用)

git rebase --interactive HEAD~N

交互式变基,可重新排序、编辑、合并(squash)或压缩(fixup)最近 N 次提交

git branch -d <分支名>

删除已合并的分支

git branch -D <分支名>

强制删除未合并的分支

 

四、远程仓库协作

命令

使用说明

git remote add origin <地址>

将本地仓库与远程仓库地址进行关联

git remote -v

查看当前关联的远程仓库地址

git remote show <remote>

显示某个远程仓库的详细信息

git fetch origin

从远程仓库下载最新代码和分支信息,但不会自动合并到当前工作分支(相对安全)

git fetch --all

一次性更新所有远程仓库的分支信息

git pull origin <分支名>

获取远程分支的最新代码,并自动合并到当前本地分支(相当于 fetch + merge)

git pull --rebase origin <分支名>

拉取远程更改并使用 rebase 方式合并,避免产生多余的合并提交

git push origin <分支名>

将本地的提交上传到指定的远程分支

git push -u origin <分支名>

首次推送新分支时使用,并建立本地的追踪关系,以后直接 git push 即可

git push --all origin

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

git push --force origin <分支名>

强制推送,用本地分支的历史直接覆盖远程分支(⚠️ 谨慎使用,可能覆盖他人工作)

git push origin --tags

一次性将本地所有的标签推送到远程仓库

git push origin --delete <分支名>

删除远程仓库上的指定分支

 

五、撤销与回退(防误操作)

命令

使用说明

git restore <文件名>

撤销工作区的修改(丢弃未 add 的改动)

git restore --staged <文件名>

撤销暂存区的修改(将已 add 的文件退回工作区)

git reset --soft HEAD~1

撤销最近一次提交,但保留修改在暂存区

git reset --mixed HEAD~1

撤销最近一次提交,但保留修改在工作区(默认模式)

git reset --hard HEAD~1

彻底回退到上一次提交,丢弃所有未推送的修改(⚠️ 高危操作)

git reset --keep <commit>

重置当前 HEAD 为指定 commit,但保持暂存区和工作区不变

git revert <commit-id>

生成一个新的提交来撤销指定的历史提交,不修改历史,适合多人协作

git checkout <commit> <file>

恢复某个历史 commit 的指定文件到当前的暂存区和工作区

git reflog

查看 HEAD 的所有操作记录,找回误删提交或错误回退的”后悔药”

 

六、暂存与标签

命令

使用说明

git stash

临时保存当前工作区未完成的修改(常用于需要紧急切换分支修 Bug 的场景)

git stash pop

恢复最近一次暂存的修改,并从暂存列表中删除该记录

git stash apply

恢复最近一次暂存的修改,但不删除 stash 记录

git stash drop

手动删除最近一次暂存的记录

git tag <标签名>

为当前提交创建一个轻量级标签(常用于发布版本号,如 v1.0)

git checkout -b <分支> <tag>

基于某个特定的 tag 新建一个分支,常用于从历史版本拉取修复分支

 

七、高级排查与操作

命令

使用说明

git cherry-pick <commit-id>

挑选指定的某一次提交,将其合并到当前分支

git bisect start/good/bad

通过二分查找法,快速定位引入 Bug 的那次提交

git blame <文件名>

查看文件每一行代码的最后修改者及提交信息(排查 Bug 责任人)

git show <commit-id>

显示某次提交的详细元数据和内容变化

git archive

将当前仓库打包生成一个可供发布的压缩包(如 zip 或 tar)

git whatchanged <file>

显示某个文件的版本历史,包括文件改名的情况

git diff --shortstat "@{0 day ago}"

快速统计今天你写了多少行代码

 

八、最佳实践建议

1. 推送前先拉取:在多人协作时,推送代码前建议先执行 git fetch origin 查看远程是否有更新,再使用 git pull --rebase origin <分支名> 同步代码,可有效减少合并冲突并保持提交历史整洁。

2. 邮箱一致性:配置的用户邮箱必须与代码托管平台(GitHub / GitLab / Gitee)注册并验证的邮箱一致,否则平台无法将提交关联到你的账号。

3. 隐私保护:如果不想暴露真实邮箱,可在 GitHub / GitLab 设置中生成一个 noreply 邮箱(如 username@users.noreply.github.com)来替代。

4. 修改只对未来的提交生效:修改用户名和邮箱仅对未来的新提交生效,不会自动修改过去的历史提交记录。

5. 获取帮助:忘记某个命令的具体用法时,随时输入 git help <命令名>(例如 git commit --help)查看官方详细说明文档。

posted @ 2026-09-07 20:47  嗨_放飞梦想  阅读(14)  评论(0)    收藏  举报