Git常用命令大全:2026年开发者必备速查手册,分场景整理可直接复用

Git 是每个开发者的日常工具,但命令数量多、参数复杂,不常用的命令总是记不住。本文按使用场景分类整理了开发工作中最常用的 Git 命令,每条命令附说明和实际示例,可以直接当速查手册使用,遇到具体场景快速找到对应命令。

不想记命令? 如果你更习惯用自然语言解决问题——直接说"帮我把最近3次提交合并成一个"或"切到 main 分支然后拉取最新代码",EasyClaw 能理解你的意图并直接执行,不需要记任何命令格式。本地运行,安装即用。命令速查手册往下看,两种方式各取所需。


使用这份手册之前

本文不是 Git 入门教程,假设你已经理解 Git 的基本概念(仓库、分支、commit、暂存区)。

命令格式说明:

  • <必填参数> 用尖括号表示,需替换为实际内容
  • [可选参数] 用方括号表示,可以省略
  • # 后面是注释说明

一、仓库初始化与配置

# 在当前目录初始化新仓库
git init

# 克隆远程仓库到本地
git clone <仓库URL>

# 克隆并指定本地目录名
git clone <仓库URL> <目录名>

# 只克隆最近1条 commit 历史(浅克隆,适合大型仓库)
git clone --depth 1 <仓库URL>

# 设置全局用户名和邮箱(首次使用必须配置)
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

# 查看所有配置项
git config --list

# 设置默认编辑器为 VS Code
git config --global core.editor "code --wait"

# 设置默认分支名为 main(新仓库)
git config --global init.defaultBranch main

二、日常提交操作

# 查看工作区状态(哪些文件被修改/新增/删除)
git status

# 将单个文件加入暂存区
git add <文件路径>

# 将所有改动加入暂存区
git add .

# 交互式选择文件的部分改动加入暂存区
git add -p

# 提交暂存区内容,并写提交信息
git commit -m "提交描述"

# 跳过暂存区,直接提交所有已追踪文件的改动
git commit -am "提交描述"

# 修改最近一次提交的信息(未 push 时使用)
git commit --amend -m "修正后的提交信息"

# 修改最近一次提交的内容(追加文件到上次 commit)
git add <遗漏的文件>
git commit --amend --no-edit

# 查看提交历史
git log

# 精简格式查看历史(一行一条)
git log --oneline

# 图形化显示分支历史
git log --oneline --graph --all

# 查看某个文件的修改历史
git log --follow -p <文件路径>

三、分支操作

# 查看所有本地分支(当前分支前有 * 号)
git branch

# 查看所有分支(含远程)
git branch -a

# 创建新分支
git branch <分支名>

# 切换到已有分支
git switch <分支名>
# 旧写法(同效果)
git checkout <分支名>

# 创建并切换到新分支
git switch -c <分支名>
# 旧写法
git checkout -b <分支名>

# 从指定 commit 创建新分支
git switch -c <分支名> <commit-hash>

# 删除已合并的本地分支
git branch -d <分支名>

# 强制删除分支(未合并也删)
git branch -D <分支名>

# 重命名当前分支
git branch -m <新分支名>

# 合并指定分支到当前分支
git merge <分支名>

# 合并时禁止 fast-forward,保留合并提交记录
git merge --no-ff <分支名>

# 变基(rebase)当前分支到目标分支
git rebase <目标分支>

# 交互式变基,整理最近 N 条 commit
git rebase -i HEAD~<N>

四、远程仓库操作

# 查看远程仓库信息
git remote -v

# 添加远程仓库
git remote add origin <仓库URL>

# 修改远程仓库 URL
git remote set-url origin <新URL>

# 删除远程仓库关联
git remote remove origin

# 拉取远程所有分支的最新信息(不合并)
git fetch

# 拉取并合并到当前分支(= fetch + merge)
git pull

# 拉取并变基(= fetch + rebase,历史更整洁)
git pull --rebase

# 推送当前分支到远程
git push

# 首次推送并建立追踪关系
git push -u origin <分支名>

# 推送所有本地分支
git push --all

# 强制推送(覆盖远程,危险操作,rebase 后使用)
git push --force-with-lease    # 推荐,比 --force 更安全
git push --force               # 不推荐,可能覆盖他人推送

# 删除远程分支
git push origin --delete <远程分支名>

# 推送本地标签到远程
git push origin <标签名>
git push origin --tags         # 推送所有标签

五、撤销与回退

# 撤销工作区某文件的改动(恢复到最近一次 commit 状态)
git restore <文件路径>
# 旧写法
git checkout -- <文件路径>

# 从暂存区取消某文件(保留工作区改动)
git restore --staged <文件路径>
# 旧写法
git reset HEAD <文件路径>

# 回退到指定 commit(保留工作区改动,常用于撤销 commit 但保留代码)
git reset --soft HEAD~1        # 撤销最近1次 commit,改动回到暂存区
git reset --mixed HEAD~1       # 撤销最近1次 commit,改动回到工作区(默认)
git reset --hard HEAD~1        # 撤销最近1次 commit,改动完全丢弃(危险)

# 生成一个"撤销提交"的新 commit(用于已 push 的提交,不改历史)
git revert <commit-hash>

# 撤销最近一次 merge
git merge --abort              # merge 过程中取消
git reset --hard ORIG_HEAD     # merge 完成后回退(未 push)

六、暂存(stash)

# 暂存当前工作区所有改动
git stash

# 暂存并附加描述
git stash push -m "描述信息"

# 暂存包括未追踪文件
git stash -u

# 查看所有暂存列表
git stash list

# 恢复最近一次暂存(保留 stash 记录)
git stash apply

# 恢复指定暂存
git stash apply stash@{2}

# 恢复最近一次暂存并删除记录
git stash pop

# 删除指定暂存记录
git stash drop stash@{1}

# 清空所有暂存
git stash clear

七、标签(tag)

# 查看所有标签
git tag

# 创建轻量标签
git tag <标签名>

# 创建附注标签(推荐,包含元数据)
git tag -a <标签名> -m "标签说明"

# 为历史 commit 打标签
git tag -a <标签名> <commit-hash>

# 查看标签详情
git show <标签名>

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

# 删除远程标签
git push origin --delete <标签名>

八、差异比较

# 查看工作区与暂存区的差异
git diff

# 查看暂存区与最近一次 commit 的差异
git diff --staged

# 比较两个分支的差异
git diff <分支A>..<分支B>

# 比较某个文件在两个 commit 间的差异
git diff <commit1> <commit2> -- <文件路径>

# 统计改动文件数和行数(不显示具体内容)
git diff --stat

九、查找与调试

# 在所有文件中搜索字符串
git grep "搜索内容"

# 查看某行代码最后是谁在哪次 commit 中改的
git blame <文件路径>

# 二分法找出引入 Bug 的 commit
git bisect start
git bisect bad                  # 标记当前 commit 有 Bug
git bisect good <commit-hash>   # 标记已知正常的 commit
# Git 自动切换到中间 commit,测试后标记 good/bad,直到找到问题 commit
git bisect reset                # 结束 bisect

# 找回误删的 commit 或 stash
git reflog

十、子模块(submodule)

# 添加子模块
git submodule add <仓库URL> <路径>

# 初始化并拉取所有子模块
git submodule update --init --recursive

# 更新所有子模块到远程最新版本
git submodule update --remote

# 克隆仓库时同时初始化子模块
git clone --recurse-submodules <仓库URL>

十一、实用别名配置(一次配置,长期受益)

将以下配置加入 ~/.gitconfig[alias] 段:

[alias]
    st = status
    co = checkout
    sw = switch
    br = branch
    ci = commit
    lg = log --oneline --graph --all --decorate
    undo = reset --soft HEAD~1
    unstage = restore --staged
    aliases = config --list | grep alias

配置后可以用 git lg 代替 git log --oneline --graph --all --decorate,大幅提升命令行效率。


高频使用场景快查

场景 命令
临时保存进度去修 Bug git stash → 修完 → git stash pop
撤销最近一次未推送的 commit git reset --soft HEAD~1
把某个 commit 的改动应用到当前分支 git cherry-pick <commit-hash>
查看是谁改了这行代码 git blame <文件>
找出引入 Bug 的具体 commit git bisect start/good/bad
删除已合并到 main 的本地分支 git branch --merged main | grep -v main | xargs git branch -d
强制让本地分支和远程一致 git fetch origin && git reset --hard origin/<分支名>

常见问题

Q1:git pullgit fetch 有什么区别?
git fetch 只下载远程的最新信息,不修改本地工作区和分支。git pull = git fetch + git merge(或 rebase),会自动将远程改动合并到当前分支。日常开发中推荐先 fetch 查看远程有哪些变化,再决定如何合并,而不是直接 pull

Q2:git reset --hard 之后能找回丢失的 commit 吗?
可以,在 30 天内。用 git reflog 找到被重置前的 commit hash,然后 git checkout <hash>git branch recover-branch <hash> 恢复。reflog 记录了所有 HEAD 的移动历史,是找回误操作的最后一道防线。

Q3:merge 和 rebase 应该用哪个?
merge 保留完整的分支历史,产生一个 merge commit;rebase 重写提交历史让其线性,历史更整洁但会修改已有 commit 的 hash。基本原则:已推送到远程的 commit 不要 rebase(会给协作者造成麻烦),本地未推送的 commit 可以自由 rebase 整理。

Q4:.gitignore 添加了文件但还是被追踪了,怎么办?
.gitignore 只对未被追踪的文件生效。如果文件已经被 Git 追踪,需要先从追踪中移除:git rm --cached <文件路径>,然后再 commit 这次变更,之后 .gitignore 才能生效。

Q5:如何同时管理多个 GitHub/GitLab 账号的 SSH Key?
~/.ssh/config 中为不同账号配置不同的 Host 别名和对应私钥,然后在每个仓库的 remote URL 中使用对应的 Host 别名(如 git@github-work:company/repo.git),实现多账号共存。


嫌命令太多记不住?试试用自然语言直接编程

上面这些命令覆盖了 Git 的大多数使用场景,但对于不常写代码、或者只是偶尔需要用 Git 管理文件的人来说,记命令本身就是一道门槛。

如果你想直接用说话的方式完成编程和代码管理,EasyClaw 提供了自然语言编程能力——不需要记 git rebase -i HEAD~3 这样的命令,直接告诉它"帮我把最近3次提交合并成一个",它会理解你的意图并完成操作。

EasyClaw 自然语言编程能做什么:

  • Git 操作:用说话的方式执行分支创建、合并、回退、变基等操作,不需要记命令参数
  • 代码生成与修改:描述你想要的功能,直接生成对应代码,或对现有代码进行解释和重构
  • 错误排查:把报错信息告诉它,它会分析原因并给出修复方案
  • 项目脚手架:说一句"帮我初始化一个 React 项目并配置 ESLint",自动完成一系列操作

对于已经熟悉 Git 命令的开发者,本文的速查手册是提效工具;对于想降低编程门槛、让 AI 直接帮你处理代码和版本管理的场景,EasyClaw 是值得试试的选择,本地运行,安装即用。


【AI辅助创作声明:本文由 AI 辅助整理与撰写,内容已经过人工审校与调整。】

posted @ 2026-05-20 11:37  PC修复电脑医生  阅读(142)  评论(0)    收藏  举报