2024 年 Stack Overflow 开发者调查显示:87% 的开发者每天使用 Git,但 65% 的初级开发者表示对高级命令不熟悉。本文将成为你的 Git 命令速查手册,覆盖从基础到进阶的全场景操作指南。
无论是修复紧急 Bug 还是管理大型项目,掌握 Git 核心命令都能让你的开发效率提升数倍。本文基于 GitHub 官方文档和真实开发场景,提炼出开发者必备的黄金指令集合,助你构建完整的 Git 知识体系。
目录
- 仓库初始化
- 日常操作
- 分支管理
- 远程协作
- 撤销操作
- 查看信息
- 高级技巧
- 快速参考表
仓库初始化
日常操作
基础工作流
git add <file> # 添加单个文件到暂存区
git add . # 添加所有修改
git commit -m "msg" # 提交更改
提交修正
git commit --amend # 修改最近一次提交(不改commit hash)
挑选提交
git cherry-pick <commit-hash> # 将 commit-hash 的提交应用到当前分支。
分支管理
操作 | 命令 | 说明 |
---|
创建分支 | git branch feat/new | |
切换分支 | git checkout main | |
创建+切换 | git checkout -b hotfix | |
合并分支 | git merge feature | 将feature合并到当前分支 |
删除分支 | git branch -d old-branch | 安全删除,如果分支的修改尚未合并到当前分支,会拒绝删除 |
删除分支 | git branch -D old-branch | 强制删除分支,无论是否合并。未合并的分支被删除后,相关修改将无法恢复 |
远程协作
git remote -v # 查看远程仓库
git remote add origin <repository> # 添加远程仓库
git push origin <branch-name> # 推送本地提交
git pull origin develop # 拉取并合并远程变更
git fetch # 从远程仓库同步最新代码和分支信息, 不会删除本地已失效的远程分支引用
git fetch --prune # 除了 git fetch 的功能外,还会删除本地仓库中已经不存在于远程仓库的分支。
撤销操作
场景 | 命令 | 注意 | 举例 |
---|
丢弃工作区修改 | git checkout – | 不可恢复! | |
取消暂存文件 | git reset HEAD | 和 git reset 等效 | |
撤销提交,但保留修改 | git reset –soft HEAD~1 | | 当你提交了一个 commit,但发现这个 commit 有错误,或者想要修改这个 commit 的内容时,可以使用此命令将 HEAD 指针回溯到前一个提交,然后修改工作区中的文件,重新提交。 |
撤销提交,并将修改放回工作区 | git reset –mixed HEAD~1 | | 与 git reset –soft HEAD~1 类似,但会将修改放回工作区,方便你进行修改。 |
彻底撤销提交,丢弃所有修改 | git reset –hard HEAD~1 | 谨慎使用 | 当你想要完全放弃之前的提交,并回到之前的状态时,可以使用此命令。暂存区和工作区都会被重置。 |
回退到某次提交 | git reset –hard a1b2c3d | 谨慎使用 | 重置回 a1b2c3d |
创建撤销提交 | git revert HEAD | 安全撤销方式 | |
查看信息
git status # 查看当前状态
git log --oneline --graph # 图形化提交历史
git diff # 比较工作目录和暂存区的更改
git diff --staged # 比较暂存区和上次提交
git diff HEAD~3 # 比较最近3次修改
git diff <b1>..<b2> # 比较分支b1和b2
git show abc123 # 查看具体提交内容
高级技巧
暂存修改
git stash # 临时保存工作区
git stash pop # 恢复最近暂存内容
git stash apply # 应用暂存的更改
git stash list # 查看暂存列表
重写历史
git commit --amend -m "新的提交说明" # 修改最近一次的提交说明
git rebase -i HEAD~5 # 交互式修改最近5次提交
标签管理
git tag v1.0.0 # 创建轻量标签
git push --tags # 推送所有标签
配置文件
git config 命令有三个不同的配置级别:
- –system:系统级配置,影响所有用户和仓库。
- –global:全局配置,影响当前用户的所有仓库。
- –local:仓库级配置,仅影响当前仓库。
git config --global user.name "Your Name" # 提交时用的名字
git config --global user.email "[email protected]" # 提交时用的email
git config --global core.editor "vim" # 默认文本编辑器, 或者 nano, emacs, code 等
git config --global diff.tool "meld" # 默认差异比较工具,或者 vimdiff, kdiff3 等
git config --global merge.tool "meld" # 默认合并工具,或者 vimdiff, kdiff3 等
git config --global color.ui true # 在命令行中显示不同的颜色,以提高可读性
git config --global alias.co checkout # 为常用的 Git 命令创建别名,以简化操作
git config --global alias.ci commit # 为常用的 Git 命令创建别名,以简化操作
git config --global alias.br branch # 为常用的 Git 命令创建别名,以简化操作
git config --list # 查看配置,git config user.name
二分法查找错误提交
git bisect start / bad / good 是一组 Git 命令,用于帮助开发者快速定位引入 Bug 或问题的提交。它通过二分查找算法,在提交历史中快速找到导致问题出现的具体提交。
命令详解
- git bisect start:启动 git bisect 工具。
- git bisect bad:标记当前提交为“坏的”(即包含 Bug 或问题的提交)。
- git bisect good:标记当前提交为“好的”(即不包含 Bug 或问题的提交)。
git bisect start
git bisect bad # 当前提交是“坏的”
git bisect good abcdefg # abcdefg 是一个“好的”提交
# ... git bisect 会自动选择并检出提交 ...
git bisect bad # 测试后发现是“坏的”
# ... git bisect 会继续选择并检出提交 ...
git bisect good # 测试后发现是“好的”
# ... git bisect 最终找到导致问题出现的提交 ...
git bisect reset # 结束 git bisect
快速参考表
类别 | 常用命令 |
---|
初始化 | init, clone |
提交 | add, commit, status |
分支 | branch, checkout, merge |
远程 | remote, push, pull |
撤销 | reset, revert, checkout – |
查看 | log, diff, show |
最佳实践提示:
- 提交前务必检查git status
- 重要修改前创建新分支
- 慎用–force推送
- 多用revert代替reset进行公共提交的撤销
- 掌握这些核心命令,你已经能应对90%的日常开发场景!建议搭配实际操作练习巩固记忆。