100条git核心命令及其用法

以下是一百条常用 Git 命令及其核心用法,每条一行总结:

  1. git init:在当前目录创建一个新的本地 Git 仓库。

  2. git clone <url>:从远程仓库克隆一份完整代码到本地。

  3. git config --global user.name "<name>":设置全局提交用户名。

  4. git config --global user.email "<email>":设置全局提交用户邮箱。

  5. git status:查看工作区和暂存区的当前状态。

  6. git add <file>:将指定文件的改动添加到暂存区。

  7. git add .:将所有改动(新增/修改/删除)添加到暂存区。

  8. git reset <file>:将暂存区中指定文件的改动撤回到工作区。

  9. git reset --soft HEAD~1:撤销上一次提交,将改动保留在暂存区。

  10. git reset --mixed HEAD~1:撤销上一次提交,将改动保留在工作区(默认模式)。

  11. git reset --hard HEAD~1:彻底回退到上一次提交,丢弃所有未提交改动。

  12. git mv <old> <new>:重命名或移动文件,并自动更新索引。

  13. git rm <file>:从仓库及磁盘中删除文件,并将删除操作加入暂存区。

  14. git commit -m "msg":将暂存区的改动打包提交到当前分支。

  15. git commit --amend:修改最后一次提交,包括提交信息和内容。

  16. git commit -a -m "msg":跳过 git add,直接提交所有已跟踪文件的改动。

  17. git diff:查看工作区与暂存区的差异。

  18. git diff --staged:查看暂存区与最新提交的差异。

  19. git log:显示分支的提交历史。

  20. git log --oneline:以单行格式简略显示提交记录。

  21. git log --graph:以 ASCII 图形展示分支合并历史。

  22. git log -p:列出每次提交的详细差异。

  23. git show <commit>:查看某次提交的详情(改动、作者、时间等)。

  24. git blame <file>:显示文件每行最后一次提交信息及作者。

  25. git grep <pattern>:在项目中搜索符合模式的行。

  26. git branch:列出本地分支并标记当前所在分支。

  27. git branch -a:列出所有本地和远程分支。

  28. git branch <name>:在当前提交上新建一个本地分支。

  29. git branch -d <name>:删除已合并到当前分支的本地分支。

  30. git branch -D <name>:强制删除本地分支(不检查合并状态)。

  31. git branch -m <old> <new>:重命名本地分支。

  32. git checkout <branch>:切换到指定分支。

  33. git checkout -b <branch>:新建并切换到指定分支。

  34. git checkout -- <file>:丢弃工作区对文件的所有未提交改动。

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

  36. git merge --no-ff <branch>:使用合并提交而非快进式合并。

  37. git merge --abort:在冲突时终止合并并恢复到合并前状态。

  38. git rebase <branch>:将当前分支的提交移到目标分支之后。

  39. git rebase -i <base>:交互式重写提交历史(修改、合并、删除提交)。

  40. git rebase --onto <newbase> <upstream> <branch>:把 <branch> 上从 <upstream> 之后的提交移到 <newbase>

  41. git cherry-pick <commit>:将指定提交的改动复制到当前分支并生成新提交。

  42. git cherry-pick -n <commit>:复制改动但不自动提交,以便合并到同一次提交。

  43. git revert <commit>:生成一个“反向提交”撤销指定提交。

  44. git stash:将工作区和暂存区的改动收起到堆栈,并还原到 CLEAN 状态。

  45. git stash list:列出所有被收起的改动快照。

  46. git stash apply:恢复最近一次收起的改动,但保留该 stash。

  47. git stash pop:恢复最近一次收起的改动并从 stash 列表中移除它。

  48. git stash drop:删除最顶层的 stash 快照。

  49. git tag:列出所有标签。

  50. git tag <name>:在当前提交打一个轻量标签。

  51. git tag -a <name> -m "msg":在当前提交打一个附带说明的注释标签。

  52. git tag -d <name>:删除本地标签。

  53. git push <remote> <branch>:将本地分支推送到远程仓库。

  54. git push -u <remote> <branch>:推送并将本地分支与远程分支关联。

  55. git push --force:强制覆盖远程分支(会重写历史,谨慎使用)。

  56. git fetch:从默认远程抓取所有分支和标签更新到本地跟踪分支。

  57. git fetch <remote> <refspec>:按指定规则抓取远程分支到本地。

  58. git fetch --prune:抓取前先删除本地已不存在于远程的跟踪分支。

  59. git pull:等同于 git fetch + git merge,将远程改动同步并合并。

  60. git pull --rebase:将远程改动抓取后用 rebase 而非 merge 方式整合。

  61. git remote -v:显示远程仓库的名称和 URL。

  62. git remote add <name> <url>:添加一个新的远程仓库别名。

  63. git remote remove <name>:删除已有的远程仓库别名。

  64. git remote set-url <name> <newurl>:修改远程仓库的 URL。

  65. git remote update:抓取所有远程仓库的更新信息。

  66. git clean -n:模拟显示将被删除的未跟踪文件列表。

  67. git clean -fd:删除所有未跟踪文件和目录。

  68. git reflog:查看 HEAD 和分支引用的移动历史(命令记录)。

  69. git reset HEAD@{n}:利用 reflog 恢复到历史上的某个位置。

  70. git bisect start:开启二分查找过程,用于定位引入 bug 的提交。

  71. git bisect good <commit>:标记某提交为“良好”。

  72. git bisect bad <commit>:标记某提交为“有问题”。

  73. git bisect reset:结束二分查找并回到初始 HEAD。

  74. git blame -L <start>,<end> <file>:只查看文件指定行区间的提交归属。

  75. git submodule add <url> <path>:将一个远程仓库作为子模块添加到指定目录。

  76. git submodule init:初始化配置文件中已声明的子模块。

  77. git submodule update:检出子模块到配置的提交状态。

  78. git submodule foreach <cmd>:在所有子模块目录中依次执行命令。

  79. git worktree add <path> <branch>:在新目录中检出指定分支,支持多工作区并行。

  80. git worktree remove <path>:移除先前添加的工作区(不删除路径,仅取消管理)。

  81. git archive <branch> | tar -x:打包某个分支的快照并解压到当前目录。

  82. git describe --tags:用最近的标签和提交计数来描述当前 HEAD。

  83. git gc:清理并优化本地仓库(打包松散对象、回收空间)。

  84. git fsck:检查仓库对象完整性并报告损坏或丢失引用。

  85. git fsck --lost-found:将孤立对象保存到 .git/lost-found

  86. git prune:删除所有无法从任何引用到达的松散对象。

  87. git pack-refs:把所有引用打包到一个文件以提升性能。

  88. git repack:将松散对象打包为一个或多个包文件。

  89. git show-ref:列出所有本地引用(分支、标签、HEAD)。

  90. git symbolic-ref HEAD:显示当前 HEAD 指向的分支引用名。

  91. git rev-parse <ref>:解析引用到具体 SHA-1 哈希。

  92. git rev-list <ref>:列出从某引用开始的所有提交哈希序列。

  93. git cat-file -p <object>:以可读形式打印任意对象的内容(commit/blob/tree)。

  94. git ls-tree <tree>:查看某次提交目录下的文件和子目录对象列表。

  95. git grep -n <pattern> <ref>:在指定提交或分支上搜索并显示行号。

  96. git diff --stat <commit1> <commit2>:显示两个提交间文件变动摘要。

  97. git diff <commit1>..<commit2>:显示两个提交之间的完整差异。

  98. git format-patch <since>:把若干提交导出为可邮件发送的补丁文件。

  99. git apply <patch>:将补丁文件应用到工作区但不自动提交。

  100. git am <mbox>:从 mbox 格式邮件应用补丁并自动生成提交。