相关技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > 相关技巧 > Git常用命令

Git中常用命令速查手册

作者:say_fall

掌握Git命令从未如此简单,这篇文章主要为大家整理了Git命令速查手册,涵盖12大类80+核心命令,从配置、提交到分支、远程操作一表搞定,点击立即获取常用操作标准流程与效率别名配置,让Git成为你写代码时的随身字典

前言

本篇是 Git 系列的第 6 篇(命令速查手册),也是整个系列的收官工具

前面 5 篇博客我们把 Git 从入门到企业级讲透了——本地仓库、分支管理、远程操作、多人协作、企业模型。但5 篇博客里用了 100+ 个命令,新人最常问的问题就是:

本篇就是来"治"这个的。

我把前面 5 篇里出现过的所有命令按功能分类整理成手册,每个命令配一句话功能说明 + 最常用参数 + 典型示例建议收藏——以后写代码卡壳了直接翻。

本节目标:成为你手边的 Git 命令字典。本篇不深入讲原理(原理在第 1-5 篇),只讲怎么用

通过本文,你将掌握:

技能应用场景
12 大类 Git 命令的速查写代码时随时翻
80+ 核心命令的标准用法覆盖 95% 日常场景
效率别名的配置让 Git 更好用
常用操作的标准流程团队统一规范

前置知识: 阅读过前 5 篇任意一篇。本篇是工具书,可以直接当字典用

一、配置类命令

命令功能常用参数示例
git config配置 Git--global(全局)
--local(当前仓库)
--list(查看)
git config --global user.name "Your Name"
git config --global user.name设置用户名-git config --global user.name "say_fall"
git config --global user.email设置邮箱-git config --global user.email "your@email.com"
git config --global init.defaultBranch设置默认分支名-git config --global init.defaultBranch main
git config --global color.ui开关颜色auto / false / truegit config --global color.ui auto
git config --global pull.rebasepull 行为true / falsegit config --global pull.rebase true
git config --global rerere.enabled开启冲突记忆true / falsegit config --global rerere.enabled true
git config --global core.editor设置默认编辑器-git config --global core.editor vim
git config --list查看所有配置-git config --list
git config --get <key>查看某项配置-git config --get user.name
git config --unset <key>取消某项配置-git config --unset user.email

配置分 3 层:--system(系统级)→ --global(用户级)→ --local(仓库级)。后一层覆盖前一层。

常用一次性配置(新人必跑)

git config --global user.name "Your Name"
git config --global user.email "your@email.com"
git config --global init.defaultBranch main
git config --global color.ui auto
git config --global pull.rebase true
git config --global core.editor vim

二、仓库初始化与克隆

命令功能常用参数示例
git init初始化本地仓库-git init
git init <dir>在指定目录初始化-git init my-project
git init --bare初始化裸仓库(远程用)-git init --bare shared-repo.git
git clone <url>克隆远程仓库-git clone git@github.com:user/repo.git
git clone <url> <dir>克隆到指定目录-git clone <url> my-folder
git clone -b <branch> <url>克隆指定分支-git clone -b dev <url>
git clone --depth 1 <url>浅克隆(只拉最近 1 次)-git clone --depth 1 <url>
git clone --bare <url>克隆为裸仓库-git clone --bare <url>

init vs clone:init 是"从零创建"(本地已有代码想用 Git 管理),clone 是"复制远程仓库"(获取别人的代码)。

三、文件操作

命令功能常用参数示例
git status查看工作区状态-s(简洁)
--short
git status
git add <file>添加文件到暂存区-git add app.py
git add .添加所有改动-git add .
git add -A添加所有改动(包括删除)-git add -A
git add -p交互式添加(按块)-git add -p
git add -u只添加已追踪文件的修改-git add -u
git diff查看工作区与暂存区差异-git diff
git diff --staged查看暂存区与最新 commit 差异-git diff --staged
git diff <branch>查看当前分支与目标分支差异-git diff master
git rm <file>删除文件并暂存-git rm app.py
git mv <old> <new>重命名文件-git mv old.py new.py
git restore <file>恢复文件到暂存区状态-git restore app.py
git restore --staged <file>取消暂存-git restore --staged app.py
git clean -fd删除未追踪文件/目录-f(强制)
-d(目录)
git clean -fd
gitignore忽略文件(手动编辑 .gitignore-见下方说明

.gitignore 常用模板:

# Python
__pycache__/
*.pyc
.venv/
.env

# Java
*.class
*.jar
target/

# IDE
.idea/
.vscode/
*.iml

# OS
.DS_Store
Thumbs.db

# Node
node_modules/
npm-debug.log

# 自定义
logs/
*.log

四、提交与回退

命令功能常用参数示例
git commit -m "msg"提交暂存区-m(消息)git commit -m "feat: add login"
git commit -am "msg"add + commit 一起-a(自动 add 已追踪)git commit -am "fix bug"
git commit --amend修改最后一次 commit-git commit --amend -m "new msg"
git commit --amend --no-edit修改最后一次 commit(不改消息)-同上
git commit -v提交时显示 diff-git commit -v
git commit --allow-empty允许空提交-git commit --allow-empty -m "trigger CI"
git reset <file>取消暂存指定文件-git reset app.py
git reset --soft HEAD~1软重置(保留改动到暂存区)--softgit reset --soft HEAD~1
git reset --mixed HEAD~1混合重置(默认,保留到工作区)--mixedgit reset HEAD~1
git reset --hard HEAD~1硬重置(丢弃所有改动)--hardgit reset --hard HEAD~1
git reset --hard <commit>硬重置到指定 commit-git reset --hard abc1234
git revert <commit>反转指定 commit-git revert abc1234
git revert --no-edit <commit>反转(不弹编辑器)-git revert --no-edit HEAD
git reflog查看所有操作记录-git reflog

reset vs revert 区别:reset 改写历史(危险),revert 创建反向 commit(安全)。已 push 的 commit 用 revert。

reset 三种模式速记:

--soft   ← HEAD 位置改变,工作区和暂存区不动
--mixed  ← HEAD 和暂存区改变,工作区不动(默认)
--hard   ← 全部改变(最危险)

五、历史查看

命令功能常用参数示例
git log查看提交历史-git log
git log --oneline简洁模式(每行 1 个 commit)-git log --oneline
git log -n 5只看最近 5 个-git log -n 5
git log --graph图形化显示分支-git log --graph --oneline
git log --all显示所有分支-git log --all
git log --author="name"按作者筛选-git log --author="say_fall"
git log --since="2 days ago"按时间筛选-git log --since="2 days ago"
git log -p显示完整 diff-git log -p
git log --stat显示改动统计-git log --stat
git log -- <file>查看某文件的修改历史-git log -- app.py
git log --grep="fix"按 commit message 搜索-git log --grep="fix"
git log -S "function"按代码内容搜索-git log -S "login"
git show <commit>显示某次提交的详情-git show abc1234
git show <commit> --stat显示某次提交的改动统计-git show abc1234 --stat
git blame <file>显示文件每行是谁改的-git blame app.py
git shortlog按作者聚合统计-git shortlog -sn

推荐的 log 别名(后面有详细配置):

git log --graph --pretty=format:'%h -%d %s (%cr) <%an>' --abbrev-commit --all

六、分支操作

命令功能常用参数示例
git branch列出本地分支-git branch
git branch -a列出所有分支(含远程)-git branch -a
git branch -r只列远程分支-git branch -r
git branch -vv显示分支跟踪信息-git branch -vv
git branch <name>创建分支-git branch dev
git branch -d <name>删除已合并分支-dgit branch -d dev
git branch -D <name>强制删除分支-Dgit branch -D dev
git branch --merged列出已合并分支-git branch --merged
git branch --no-merged列出未合并分支-git branch --no-merged
git branch -m <new>重命名当前分支-git branch -m main
git branch -u <remote>/<branch>设置上游分支-git branch -u origin/dev
git checkout <name>切换分支(旧语法)-git checkout dev
git checkout -b <name>创建并切换(旧语法)-git checkout -b dev
git switch <name>切换分支(新语法)-git switch dev
git switch -c <name>创建并切换(新语法)-cgit switch -c dev
git switch -c <name> origin/<name>创建并跟踪远程分支-git switch -c dev origin/dev
git merge <branch>合并分支-git merge dev
git merge --no-ff <branch>非快进合并--no-ffgit merge --no-ff dev
git merge --squash <branch>压缩合并--squashgit merge --squash dev
git merge --abort取消合并-git merge --abort
git rebase <branch>变基到目标分支-git rebase master
git rebase -i HEAD~3交互式 rebase-igit rebase -i HEAD~3
git rebase --continue冲突解决后继续-git rebase --continue
git rebase --abort取消 rebase-git rebase --abort
git rebase --skip跳过当前 commit-git rebase --skip

merge vs rebase 速记:

维度mergerebase
历史树状(merge commit)线性
适用共享分支本地 feature
危险度高(改写历史)

七、暂存操作

命令功能常用参数示例
git stash暂存当前改动-git stash
git stash push -m "msg"暂存并加消息-mgit stash push -m "login 写到一半"
git stash -u包括未追踪文件-ugit stash -u
git stash list查看所有 stash-git stash list
git stash pop恢复并删除最新 stash-git stash pop
git stash apply stash@{0}恢复但不删除-git stash apply stash@{0}
git stash drop stash@{0}删除指定 stash-git stash drop stash@{0}
git stash show stash@{0}看 stash 的改动-git stash show stash@{0}
git stash show -p stash@{0}看 stash 的完整 diff-pgit stash show -p stash@{0}
git stash clear清空所有 stash-git stash clear
git stash branch <name>从 stash 创建分支-git stash branch dev stash@{0}

stash 是栈结构(LIFO:后进先出)。stash@{0} 是最新的,stash@{1} 是上一个。

八、远程操作

命令功能常用参数示例
git remote列出远程仓库别名-git remote
git remote -v列出远程仓库 URL-git remote -v
git remote add <name> <url>添加远程仓库-git remote add origin git@github.com:user/repo.git
git remote remove <name>删除远程仓库-git remote remove origin
git remote rename <old> <new>重命名远程-git remote rename origin upstream
git remote set-url <name> <url>修改远程 URL-git remote set-url origin <new-url>
git remote show <name>查看远程详情-git remote show origin
git remote prune <name>清理已删除的远程跟踪分支-git remote prune origin
git fetch <remote>抓取远程更新(不合并)-git fetch origin
git fetch --all抓取所有远程-git fetch --all
git fetch -p抓取并清理已删除远程分支-pgit fetch -p
git pull抓取 + 合并(默认)-git pull
git pull <remote> <branch>拉取指定分支-git pull origin dev
git pull --rebase拉取并 rebase-git pull --rebase
git push推送到上游分支-git push
git push <remote> <branch>推送到指定分支-git push origin dev
git push -u <remote> <branch>推送并设置上游-ugit push -u origin master
git push --all推送所有分支-git push --all
git push --tags推送所有 tag-git push --tags
git push --delete <branch>删除远程分支-git push origin --delete dev
git push --force强制推送(危险)--forcegit push --force origin master
git push --force-with-lease安全强制推送--force-with-leasegit push --force-with-lease origin master

fetch vs pull 速记:

命令行为何时用
fetch只下载,不合并想"先看看再合并"
pullfetch + merge信任远程,直接同步

九、标签

命令功能常用参数示例
git tag列出所有 tag-git tag
git tag -l "v1.*"模糊搜索 tag-lgit tag -l "v1.*"
git tag v1.0.0创建轻量 tag-git tag v1.0.0
git tag -a v1.0.0 -m "msg"创建附注 tag(推荐)-a(annotated)
-m
git tag -a v1.0.0 -m "发布 1.0.0"
git tag -a v1.0.0 <commit>给历史 commit 打 tag-git tag -a v1.0.0 abc1234
git show v1.0.0查看 tag 详情-git show v1.0.0
git push origin v1.0.0推送单个 tag-git push origin v1.0.0
git push origin --tags推送所有 tag--tagsgit push origin --tags
git tag -d v1.0.0删除本地 tag-dgit tag -d v1.0.0
git push origin --delete v1.0.0删除远程 tag-git push origin --delete v1.0.0
git checkout v1.0.0切到指定 tag(detached HEAD)-git checkout v1.0.0

轻量 tag 只是个名字,附注 tag 包含打 tag 者的信息、日期、说明。发版推荐用附注 tag。

十、企业级工具

10.1 git-flow(Git Flow 工具)

命令功能示例
git flow init初始化 Git Flowgit flow init
git flow feature start <name>开始 featuregit flow feature start login
git flow feature finish <name>完成 featuregit flow feature finish login
git flow feature publish <name>发布 feature 到远程git flow feature publish login
git flow feature pull <remote> <name>拉取远程 featuregit flow feature pull origin login
git flow release start <v>开始 releasegit flow release start v1.0.0
git flow release finish <v>完成 releasegit flow release finish v1.0.0
git flow hotfix start <name>开始 hotfixgit flow hotfix start pay-bug
git flow hotfix finish <name>完成 hotfixgit flow hotfix finish pay-bug

10.2 git worktree(多工作目录)

命令功能示例
git worktree add <path> <branch>添加工作目录git worktree add ../feature-branch feature/x
git worktree list列出所有工作目录git worktree list
git worktree remove <path>删除工作目录git worktree remove ../feature-branch
git worktree prune清理无效工作目录git worktree prune

10.3 git submodule(子模块)

命令功能示例
git submodule add <url> <path>添加子模块git submodule add <url> libs/foo
git submodule init初始化子模块git submodule init
git submodule update更新子模块git submodule update --init --recursive
git submodule status查看子模块状态git submodule status

10.4 git archive(打包)

命令功能示例
git archive --format=zip HEAD > out.zip打包当前版本git archive --format=zip HEAD > release.zip
git archive --format=tar v1.0.0打包指定 taggit archive --format=tar v1.0.0 > v1.0.0.tar

10.5 git bisect(二分查找 bug)

命令功能示例
git bisect start开始二分查找git bisect start
git bisect bad标记当前为坏版本git bisect bad
git bisect good <commit>标记某 commit 为好版本git bisect good v1.0.0
git bisect reset退出二分查找git bisect reset

git bisect 是定位"哪个 commit 引入 bug"的神器——用二分查找,比逐个 commit 试快 100 倍。

10.6 git grep(代码搜索)

命令功能示例
git grep "pattern"在工作区搜索git grep "TODO"
git grep -n "pattern"显示行号git grep -n "TODO"
git grep "pattern" HEAD~5在指定 commit 搜索git grep "function_name" v1.0.0

十一、效率别名(强烈推荐)

11.1 一键配置

把下面这段直接复制到终端运行,配置就生效了:

# log 美化
git config --global alias.lg "log --graph --pretty=format:'%h -%d %s (%cr) <%an>' --abbrev-commit --all"

# 简洁 log
git config --global alias.l "log --oneline --graph -10"

# 全部 add + 状态
git config --global alias.st "status"

# 简洁 status
git config --global alias.ss "status -s"

# 全部 add
git config --global alias.a "add -A"

# 带信息的 commit
git config --global alias.cm "commit -m"

# 撤销最后一次 commit(保留改动)
git config --global alias.undo "reset --soft HEAD~1"

# 查看所有分支
git config --global alias.br "branch -a"

# 看远程
git config --global alias.rv "remote -v"

# diff 工具
git config --global alias.d "diff"
git config --global alias.dc "diff --cached"

11.2 别名效果

配好之后:

# 等价 git log --graph --pretty=format:'%h -%d %s (%cr) <%an>' --abbrev-commit --all
git lg

# 简洁 status
git ss

# 看所有分支
git br

# 撤销最后一次 commit(保留改动)
git undo

配置一次,终身受用。把上面那段命令保存到笔记里,新机器配置时直接复制粘贴。

11.3 更多推荐别名

# 推送到当前分支的上游
git config --global alias.ps "push"

# 拉取并 rebase
git config --global alias.pl "pull --rebase"

# 看所有 stash
git config --global alias.sl "stash list"

# 看 stashes 详情
git config --global alias.ss2 "stash show -p"

# 找到删除的文件
git config --global alias.df "diff --diff-filter=D --summary"

# 今天的 commit
git config --global alias.today "log --since=midnight --author=\$(git config user.name) --oneline"

# 我上周的 commit
git config --global alias.week "log --since='1 week ago' --oneline"

十二、常用操作标准流程

12.1 第一次用 Git(新人必跑)

# 1. 配置身份
git config --global user.name "Your Name"
git config --global user.email "your@email.com"

# 2. 配置默认分支
git config --global init.defaultBranch main

# 3. 配置编辑器
git config --global core.editor vim

# 4. 开启颜色
git config --global color.ui auto

# 5. (可选)配 SSH Key
ssh-keygen -t ed25519 -C "your@email.com"
cat ~/.ssh/id_ed25519.pub
# 复制到 Gitee/GitHub

12.2 新项目开发流程

# 1. clone 远程仓库
git clone git@github.com:user/repo.git
cd repo

# 2. 创建 feature 分支
git switch -c feature/awesome-feature

# 3. 开发 + 提交
echo "code" > app.py
git add .
git commit -m "feat: add awesome feature"

# 4. 推送到远程
git push -u origin feature/awesome-feature

# 5. 在平台创建 PR
# 6. 团队 review + 合并

12.3 同步远程最新代码

# 标准流程(推荐)
git fetch origin
git rebase origin/master  # 或 git merge origin/master

# 或一条命令(已配置 pull.rebase = true)
git pull --rebase

12.4 解决冲突

# 1. 冲突时先看哪些文件冲突
git status

# 2. 编辑冲突文件(删 <<<<<<< ======= >>>>>>>)

# 3. 标记解决
git add <file>

# 4. 完成合并/rebase
git commit                      # merge 时
git rebase --continue           # rebase 时

# 5. 验证
git status  # 不应该有 Unmerged paths

12.5 紧急修复 Bug

# 1. 创建 hotfix 分支
git switch -c hotfix/critical-bug

# 2. 修复 + 提交
echo "fix" > bug.py
git add .
git commit -m "hotfix: critical bug"

# 3. 推送
git push -u origin hotfix/critical-bug

# 4. 创建 PR + 快速 review
# 5. 合并到 master + 打 tag
git switch master
git merge --no-ff hotfix/critical-bug
git tag v1.0.1
git push origin v1.0.1

12.6 发版

# 1. 切到 master
git switch master

# 2. 拉取最新
git pull --rebase

# 3. 打 tag
git tag -a v1.0.0 -m "Release 1.0.0"

# 4. 推送 tag
git push origin v1.0.0

12.7 撤销操作

# 撤销工作区修改
git restore <file>

# 取消暂存
git restore --staged <file>

# 修改最后一次 commit 信息
git commit --amend

# 撤销最后一次 commit(保留改动)
git reset --soft HEAD~1

# 撤销最后一次 commit(丢弃改动)
git reset --hard HEAD~1

# 撤销已 push 的 commit
git revert <commit>

12.8 找回"消失"的代码

# 1. 查所有操作记录
git reflog

# 2. 找回去
git reset --hard <commit-id>

十三、命令数与场景对照表

“这么多命令,平时到底用多少?”

场景必用命令(5 个以内)频率
日常开发statusaddcommitpushpull⭐⭐⭐⭐⭐
查看历史logdiffshow⭐⭐⭐⭐
分支开发branchswitchmerge⭐⭐⭐⭐
冲突解决statusaddcommit⭐⭐⭐
团队协作remotefetchpull --rebase⭐⭐⭐⭐
发版tagpush --tags⭐⭐
紧急修复switch -c hotfix/mergetag⭐⭐
事故回滚revertresetreflog

日常工作 90% 只用 16 个核心命令。其他的是"进阶武器",用到再查本手册。

十四、几个常见疑问

这么多命令怎么记?

答:分 3 层。

层级数量记忆方法
核心 16 个16每天用,自然记住
常用 30 个30反复查本手册
不常用 50 个50+知道有,用到再查

核心 16 个(必背):

config, init, clone, status, add, commit,
log, diff, branch, switch, merge,
remote, fetch, pull, push, reflog

命令太长了不想打怎么办?

答:配别名。

参考第 11 节。配一次终身受用。

哪个命令最容易出错?

答:reset --hardpush --forceclean -fd

3 个都是不可逆的操作。执行前三思

怎么查命令的详细帮助?

答:用 git helpman git

# 查某个命令的帮助
git help commit
# 或
git commit --help
# 或
man git-commit

# 查所有命令列表
git help -a

# 查常用工作流
git help workflows

命令记不住有没有图形化工具?

答:有,但不推荐。

工具平台说明
GitHub DesktopWindows/Mac简单直观
SourcetreeWindows/Mac功能强大
GitKraken全平台颜值高
VS Code-内置 Git 集成
IntelliJ IDEA-JetBrains 全家桶

:工具能"上手"但不能"深入"。想真正懂 Git,还是得用命令行

以上就是Git中常用命令速查手册的详细内容,更多关于Git常用命令的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文