git常用命令速查表

张开发
2026/4/17 22:42:10 15 分钟阅读

分享文章

git常用命令速查表
1. 初始化与配置首次安装Git后设置全局提交者姓名。git config --global user.name Your Name设置全局提交者邮箱。git config --global user.email your_emailexample.com在当前目录初始化一个新的本地Git仓库。git init克隆下载远程仓库到本地。git clone repository_url2. 文件状态与暂存查看工作区与暂存区的文件状态。用颜色区分状态红/绿清晰判断下一步该 add 还是 commit。git status将工作区所有新文件和修改添加到暂存区。git add .将工作区的指定文件添加到暂存区。git add file仅添加已跟踪文件的修改到暂存区忽略新文件。 当只想提交修改不想提交新增文件时使用。git add -u将所有文件从暂存区移回工作区。批量取消暂存重新选择要提交的文件。git reset HEAD .将指定文件从暂存区移回工作区取消暂存。git reset HEAD file强制删除工作区中所有未被Git跟踪的文件。 高危命令删除后不可恢复执行前务必用 git clean -n 预览将被删除的文件。git clean -f3. 提交与历史查看将暂存区内容提交到本地仓库-m后跟提交信息。推荐使用“类型: 描述”格式如 feat: 新增支付功能git commit -m message跳过git add步骤直接提交所有已跟踪文件的修改。仅对已跟踪文件生效新增文件仍需先 git add。git commit -am message查看详细的提交历史。git log以简洁的单行形式查看提交历史。最常用的日志查看方式便于快速浏览。git log --oneline筛选特定作者的提交。用于代码审查或统计个人工作量。git log --authorname查看指定时间之后的提交历史。支持多种时间格式如 “2 weeks ago”。git log --since2024-01-014.分支管理列出所有本地分支当前分支前有 * 号。切换分支前务必用此命令确认当前所在分支。git branch列出所有分支本地远程。 远程分支以 remotes/origin/ 开头。git branch -a基于当前分支创建新分支。创建后不会自动切换到新分支。git branch branch_name切换到指定分支。 切换前确保工作区干净无未提交的修改否则可能冲突或丢失修改。git checkout branch_name创建并切换到新分支最常用。 功能开发的标准起点命令。git checkout -b branch_name拉取远程分支并在本地创建同名分支进行跟踪。 用于开始协作一个已存在的远程分支。git checkout -b local_branch origin/remote_branch重命名当前分支。 在推送前重命名避免远程分支名混乱。git branch -m new_name删除已合并的本地分支。 安全删除如果分支未合并Git会阻止删除。git branch -d branch_name强制删除本地分支无论是否合并。 **慎用**通常用于删除废弃的、未合并的实验性分支。git branch -D branch_name删除远程分支。 删除后团队成员需运行 git fetch --prune 来同步本地远程分支列表。git push origin --delete branch_name5.远程仓库操作将本地仓库与一个新的远程仓库关联。 origin 是惯用名可自定义。一个本地仓库可关联多个远程。git remote add origin url查看已配置的远程仓库地址。 用于验证 push/pull 的地址是否正确。git remote -v从远程仓库下载所有最新数据分支、标签但不合并到本地。 最安全的同步方式。允许你在合并前先查看远程的变更 (git diff origin/main) 。git fetch origingit fetch git merge拉取并合并远程分支到当前分支。推送前必做以避免推送冲突。但自动合并可能产生冲突需手动解决。git pull origin branch将本地分支推送到远程仓库。 首次推送需加 -u 参数建立跟踪git push -u origin main。git push origin branch如果已建立跟踪关系可直接推送。 推送失败时通常是因为远程有更新需先 git pull。git push6.合并与变基将指定分支合并到当前分支。 会产生一个额外的合并提交。如果分支是线性的fast-forward则不会产生。git merge branch强制生成合并提交即使可以快速合并。 团队协作推荐能清晰保留分支历史便于追溯 。git merge --no-ff branch将当前分支的提交“移植”到目标分支的最新提交之后。 能使项目历史保持一条直线更整洁。但会重写提交历史严禁对已共享已推送的分支使用。git rebase base_branch在变基过程中出现无法解决的冲突时终止变基操作。 用于恢复到变基前的状态是变基操作的“安全阀”。git rebase --abort7.标签管理为当前提交创建一个轻量标签。 标签通常用于标记版本号如 v1.0.0。轻量标签只是一个指向提交的引用。git tag tagname创建带注解的标签推荐。 包含创建者、日期和说明信息适合正式发布。git tag -a tagname -m message将特定标签推送到远程仓库。 标签默认不会随 git push 推送必须显式推送。推送所有标签用git push origin --tags。git push origin tagname8.撤销与回滚丢弃工作区中对某个文件的所有修改恢复到最近一次提交或暂存的状态。 **高危**未保存的修改将永久丢失无法找回。git checkout -- file(Git 2.23) 功能同 git checkout – 语义更清晰。 同样高危使用前务必确认。git restore file(Git 2.23) 将文件从暂存区移回工作区取消暂存。 替代旧的 git reset HEAD 命令。git restore --staged file将HEAD指针移动到指定提交但保留工作区和暂存区的修改。 用于“撤销提交但保留代码”可重新组织提交。git reset --soft commit强制将HEAD、暂存区、工作区全部回滚到指定提交的状态。 **最高危命令**所有后续提交和未提交的修改都将被清除。仅限本地未推送的提交且操作前最好备份。git reset --hard commit9.其他命令将当前工作区和暂存区的修改临时“储藏”起来让工作区变干净。 用于紧急切换分支或拉取代码。用 git stash pop 恢复。git stash查看工作区与暂存区或暂存区与仓库之间的差异。 提交前检查代码变更的利器。git diff HEAD 可查看工作区与最新提交的差异。git diff写在最后核心避坑指南与最佳实践提交前黄金三步git status 确认要提交的文件避免提交密钥、日志等敏感或无关文件 。git diff 或 git diff --cached 仔细核对修改内容。编写规范的提交信息使用约定式提交Conventional Commits如 fix(login): 修复密码验证逻辑。分支操作安全守则主分支保护 main/master 分支应设置为受保护分支禁止直接推送必须通过合并请求Pull Request。功能分支开发 任何新功能或修复都应创建独立分支feat/xxx, fix/xxx开发完成后再合并。勤同步早合并 频繁地从主分支 git pull --rebase 到你的功能分支减少最终合并时的冲突规模和难度。远程协作红线禁止 git push -f (强制推送) 这会覆盖远程历史是团队项目的“核按钮”。除非你百分之百确定只有你一人在操作该分支。变基(rebase)的适用范围 只对你本地、未推送的提交进行变基。一旦推送就应使用合并(merge)。拉取策略 使用 git pull --rebase 代替单纯的 git pull可以使你的本地提交历史更整洁。但如果对 rebase 不熟悉使用默认的 git pull即 git fetch git merge更安全。回滚与撤销的抉择场景区分仅撤销未暂存的修改 - git checkout – 或 git restore 。撤销暂存add了不该add的文件 - git restore --staged 。撤销最近一次提交未推送 - git commit --amend 或 git reset HEAD~1。回滚到历史某个版本未推送 - git reset --hard commit_id(极其危险)。回滚已推送的提交 - git revert commit_id(推荐)因为它会创建一个新的反向提交不会破坏协作历史。

更多文章