Git 常用命令大全:初学者到进阶必备指南

Git 是目前最主流的分布式版本控制系统,熟练掌握常用命令能够大幅提升日常开发效率。下面按典型使用流程分类,系统总结 Git 的常用命令及应用场景。

配置相关命令

  1. git config

    • git config --global user.name "你的名字":配置全局用户名

    • git config --global user.email "你@邮箱.com":配置全局邮箱

    • git config --list:查看当前所有配置

    • git config --global core.editor vim:设置默认编辑器

    • git config --global color.ui true:启用彩色输出

  2. 本地项目配置

    • 在项目根目录使用不加 --globalgit config 命令,可以为该仓库单独设置配置。

仓库初始化与克隆

  1. git init
    在当前目录初始化一个新的 Git 仓库(创建 .git 目录)。

  2. git clone <远程仓库地址>
    将远程仓库完整地克隆到本地,包含历史提交记录。

  3. git clone --depth 1 <url>
    只克隆最近的一次提交,适用于只需要最新代码的场景。

查看状态与差异

  1. git status
    显示当前工作区与暂存区状态,比如哪些文件被修改、哪些文件未被跟踪。

  2. git status -sgit status --short
    使用简洁格式显示状态。

  3. git diff
    查看工作区与暂存区的差异(未暂存的更改)。

  4. git diff --cachedgit diff --staged
    查看已暂存但尚未提交的变更。

  5. git diff HEAD
    显示工作区或暂存区与最近一次提交(HEAD)的差异。

添加、提交与撤销

  1. git add <文件>
    将指定文件修改加入暂存区。

  2. git add .git add -A
    将所有已修改或新增的文件加入暂存区。

  3. git commit -m "提交信息"
    将暂存区内容提交为一个快照,并附加说明。

  4. git commit --amend
    修改最近一次提交的提交信息或合并新的暂存更改到最后一次提交。

  5. 撤销操作

    • git reset HEAD <文件>:取消暂存(从暂存区移出该文件)

    • git checkout -- <文件>:丢弃工作区未暂存的修改(恢复到上次提交状态)

    • git reset --hard HEAD:丢弃所有未提交更改(取消暂存 + 工作区恢复)

    • git revert <commit>:为指定提交生成一个新的“反向提交”,用于安全的撤销历史提交

日志与历史浏览

  1. git log
    显示提交历史(默认格式)。

  2. git log --oneline
    以压缩格式显示每条提交(只显示提交 ID 与简短信息)。

  3. git log -p
    显示每次提交所引入的差异内容。

  4. git log --author="用户名"
    仅显示某个作者的提交记录。

  5. git log <分支1>..<分支2>
    显示两个分支之间的差异提交。

  6. git blame <文件>
    逐行显示某个文件最新的一次提交记录(谁、哪次提交修改了这一行)。

分支与合并管理

  1. git branch
    列出本地所有分支。

  2. git branch -r
    列出远程分支。

  3. git branch -a
    列出本地与远程所有分支。

  4. git branch <分支名>
    新建一个本地分支(不切换)。

  5. git checkout <分支>
    切换到指定分支。

  6. git checkout -b <分支名>
    创建并切换到新分支。

  7. git merge <分支>
    将指定分支合并到当前分支。

  8. git branch -d <分支>
    删除本地分支(前提是已被合并或无未合并提交)。

  9. git branch -D <分支>
    强制删除本地分支。

  10. git cherry-pick <commit>
    将某个提交引入到当前分支(在不同分支间拣选提交)。

  11. git rebase <目标分支>
    对当前分支做变基,重写提交历史。

  12. 远程分支操作

    • git push origin <分支>:将本地分支推送到远程

    • git push -u origin <分支>:推送并设置远程跟踪关系

    • git push origin --delete <分支>:删除远程分支

    • git fetch:从远程获取最新提交,不合并

    • git pull:相当于 git fetch + git merge,拉取并合并

标签与版本标注

  1. git tag
    列出本地所有标签。

  2. git tag <标签名>
    在当前提交打一个轻量标签。

  3. git tag -a <标签名> -m "说明"
    给当前提交打一个带注释的标签(Annotated Tag)。

  4. git tag <标签名> <commit>
    给指定提交打标签。

  5. git push origin <标签名>
    推送某个标签到远程。

  6. git push origin --tags
    推送所有本地标签到远程。

  7. 删除标签

    • git tag -d <标签名>:删除本地标签

    • git push origin :refs/tags/<标签名>:删除远程标签

暂存(stash)机制

  1. git stash push
    将当前工作区和暂存区的更改暂存起来,恢复干净工作区。

  2. git stash list
    列出所有 stash 条目。

  3. git stash apply [stash@{n}]
    应用指定条目的暂存改动到当前工作区(但保留 stash 记录)。

  4. git stash pop
    应用最近一个暂存改动并从 stash 列表中移除它。

  5. git stash drop [stash@{n}]
    删除指定的 stash 条目。

  6. git stash clear
    清空所有 stash 条目。

清理与辅助命令

  1. git clean -f
    删除工作目录中未跟踪的文件(小心使用)。

  2. git clean -fd
    删除未跟踪的文件与目录。

  3. git rm <文件>
    从仓库和文件系统中删除文件,并提交变更。

  4. git rm --cached <文件>
    仅从 Git 索引(暂存区)中移除文件,而保留本地文件。

  5. git mv <旧名> <新名>
    重命名或移动文件(在 Git 控制下)。

  6. git stash(简写)
    等同于 git stash push

  7. git reflog
    查看 HEAD 或分支的变更记录(包括被重写/回退的历史)。

  8. git reset <commit>
    将当前 HEAD、暂存区指向指定提交,但保留工作区改动(软重置)。

  9. git reset --hard <commit>
    将 HEAD、暂存区和工作区都重置为指定提交,丢弃所有后续改动。

  10. git bisect start / git bisect bad / git bisect good
    使用二分法查找导致 bug 的提交。

  11. git archive
    以压缩包方式导出某个分支或提交的源代码快照。

  12. git gc
    对本地仓库进行垃圾回收和资源整理。

别名与效率提升

  1. git config --global alias.st status
    git status 定义别名 git st

  2. 定义更多别名(如 co = checkoutci = commit)可以大大节省键入操作。

  3. .gitconfig 中配置彩色输出、补全等特性也能提升日常操作体验。

使用技巧与注意事项

  • 在执行破坏性操作(如 reset --hardclean -f)之前,建议确认无未备份改动或暂存更改。

  • 对于多人协作的分支,避免在公共分支上使用变基(rebase)等会重写历史的操作。

  • 常用 git log --oneline --graphgit log --graph --all 来以图形方式查看分支与合并历史。

  • 对大型仓库或文件多的项目,可使用浅克隆(--depth 参数)或部分检出策略。

  • 合并时如遇冲突,要逐文件检查冲突标记(<<<<<<<=======>>>>>>>),务必在确认无误后再提交。

  • 经常清理无用分支、标签和垃圾对象,可以保持仓库整洁。

掌握以上这些 Git 常用命令,能够覆盖日常开发绝大多数场景。从项目初始化、代码提交、分支管理、合并冲突、撤销历史,到标签、stash、清理等操作,逐步练习与积累,你会越来越得心应手。

评论