Git 常用命令速查
配置
| 命令 | 说明 |
|---|---|
git config --global user.name "name" | 设置全局用户名 |
git config --global user.email "email" | 设置全局邮箱 |
git config --global --list | 列出所有全局配置 |
git config --global core.editor vim | 设置默认编辑器 |
git config --global core.autocrlf input | 设置换行符处理(Mac/Linux 用 input) |
git config --global init.defaultBranch main | 设置默认分支名称 |
初始化与克隆
| 命令 | 说明 |
|---|---|
git init | 在当前目录初始化新的 Git 仓库 |
git clone <url> | 克隆远程仓库到本地 |
git clone <url> <dir> | 克隆到指定目录 |
git clone --depth 1 <url> | 浅克隆,只获取最近一次提交(加快大仓库克隆) |
基本操作
| 命令 | 说明 |
|---|---|
git status | 查看工作区状态 |
git add <file> | 添加指定文件到暂存区 |
git add . | 添加所有变更到暂存区 |
git add -p | 交互式暂存,逐块选择要提交的内容 |
git commit -m "msg" | 提交暂存区的内容 |
git commit -am "msg" | 跳过 add,直接提交已跟踪文件的修改 |
git commit --amend | 修改上一次提交(可追加修改或修改 message) |
git commit --amend --no-edit | 追加文件到上一次提交,不修改 message |
git reset HEAD <file> | 从暂存区取消指定文件 |
git checkout -- <file> | 丢弃工作区中指定文件的修改(旧版用法,推荐 git restore) |
git rm <file> | 删除文件并提交到暂存区 |
git mv <old> <new> | 重命名文件 |
分支
| 命令 | 说明 |
|---|---|
git branch | 列出所有本地分支 |
git branch -r | 列出所有远程分支 |
git branch -a | 列出所有本地和远程分支 |
git branch <name> | 创建新分支 |
git branch -d <name> | 删除已合并的分支 |
git branch -D <name> | 强制删除未合并的分支 |
git checkout <branch> | 切换到指定分支 |
git checkout -b <branch> | 创建并切换到新分支 |
git switch <branch> | 切换到指定分支(Git 2.23+ 推荐用法) |
git switch -c <branch> | 创建并切换到新分支(Git 2.23+) |
git branch -m <old> <new> | 重命名分支 |
远程仓库
| 命令 | 说明 |
|---|---|
git remote -v | 查看远程仓库地址 |
git remote add origin <url> | 添加远程仓库 |
git remote remove <name> | 删除远程仓库 |
git remote set-url origin <url> | 修改远程仓库地址 |
git fetch <remote> | 从远程仓库获取更新(不合并) |
git fetch --all | 从所有远程仓库获取更新 |
git pull <remote> <branch> | 获取并合并远程分支到当前分支 |
git pull --rebase | 获取并以 rebase 方式合并 |
git push <remote> <branch> | 推送本地分支到远程 |
git push -u origin <branch> | 推送并设置上游分支 |
git push --force-with-lease | 安全强制推送(会检查远程是否被他人修改) |
git push --delete origin <branch> | 删除远程分支 |
撤销与回退
| 命令 | 说明 |
|---|---|
git reset --soft <commit> | 回退到指定提交,保留工作区和暂存区修改 |
git reset --mixed <commit> | 回退到指定提交,保留工作区修改,清空暂存区(默认) |
git reset --hard <commit> | 回退到指定提交,丢弃所有修改(不可恢复) |
git revert <commit> | 创建一个新的提交来撤销指定提交(安全,保留历史) |
git checkout <commit> -- <file> | 恢复文件到指定提交时的版本 |
git restore --staged <file> | 从暂存区移除文件(Git 2.23+) |
git restore <file> | 丢弃工作区修改(Git 2.23+) |
git stash | 暂存当前工作区修改 |
git stash pop | 恢复最近一次暂存的修改并删除该暂存 |
git stash list | 查看所有暂存 |
git stash drop stash@{0} | 删除指定暂存 |
git stash clear | 清空所有暂存 |
日志与对比
| 命令 | 说明 |
|---|---|
git log | 查看提交历史 |
git log --oneline | 简洁格式的提交历史 |
git log --oneline --graph | 图形化分支合并历史 |
git log --since="2026-01-01" | 查看指定日期后的提交 |
git log --author="name" | 查看指定作者的提交 |
git log -p | 查看每次提交的差异 |
git log --stat | 查看每次提交的文件变更统计 |
git log -n 5 | 查看最近 5 条提交 |
git diff | 查看工作区与暂存区的差异 |
git diff --staged | 查看暂存区与上一次提交的差异 |
git diff <branch1>..<branch2> | 查看两个分支之间的差异 |
git blame <file> | 查看文件每一行的最后修改提交 |
git shortlog -sn | 查看每位作者的提交数量统计 |
标签
| 命令 | 说明 |
|---|---|
git tag | 列出所有标签 |
git tag <name> | 创建轻量标签 |
git tag -a <name> -m "msg" | 创建带注释的标签 |
git tag -d <name> | 删除本地标签 |
git push origin <tag> | 推送指定标签到远程 |
git push origin --tags | 推送所有标签到远程 |
git checkout <tag> | 切换到指定标签(进入分离 HEAD 状态) |
合并
| 命令 | 说明 |
|---|---|
git merge <branch> | 将指定分支合并到当前分支 |
git merge --no-ff <branch> | 禁用 fast-forward,始终创建合并提交 |
git merge --squash <branch> | 将指定分支的所有提交压缩为一次提交 |
git merge --abort | 取消当前正在进行的合并 |
git mergetool | 使用配置的合并工具解决冲突 |
变基
| 命令 | 说明 |
|---|---|
git rebase <branch> | 将当前分支变基到指定分支 |
git rebase -i <commit> | 交互式变基,可压缩、修改、删除提交 |
git rebase --continue | 解决冲突后继续变基 |
git rebase --abort | 取消当前正在进行的变基 |
git rebase --skip | 跳过当前冲突的提交 |
git cherry-pick <commit> | 将指定提交应用到当前分支 |
git cherry-pick <c1>..<c2> | 应用一个范围内的多个提交 |
清理与维护
| 命令 | 说明 |
|---|---|
git clean -n | 预览哪些未跟踪的文件会被删除 |
git clean -f | 删除未跟踪的文件 |
git clean -fd | 删除未跟踪的文件和目录 |
git gc | 运行垃圾回收,优化仓库存储 |
git fsck | 检查仓库的完整性和一致性 |
git reflog | 查看所有引用变更历史(可用于恢复丢失的提交) |
