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)查看官方详细说明文档。

浙公网安备 33010602011771号