Git中文社区

命令速查

配置与初始化

git config

读取和设置 Git 配置项

教程
git config --global user.name "张三"设置用户名
git config --global user.email "[email protected]"设置邮箱
git config --global core.quotepath false中文文件名正常显示
git config --list --show-origin列出所有配置及其来源

git init

在当前目录创建一个新的 Git 仓库

教程
git init初始化当前目录
git init -b main my-project创建目录并指定初始分支名
git init --bare project.git创建裸仓库

git clone

克隆一个远程仓库到本地

教程
git clone <地址>克隆仓库
git clone <地址> my-dir克隆到指定目录
git clone --depth 1 <地址>浅克隆,只获取最新提交
git clone --recurse-submodules <地址>同时克隆子模块

git help

查看命令帮助文档

git help <命令>打开完整帮助
git <命令> -h查看简要用法

基本操作

git status

查看工作区和暂存区的状态

教程
git status查看详细状态
git status -s简洁格式
git status --ignored同时显示被忽略的文件

git add

把文件修改添加到暂存区

教程
git add <文件>暂存指定文件
git add .暂存当前目录下所有变更
git add -u只暂存已跟踪文件的修改和删除
git add -p交互式选择要暂存的代码块

git commit

把暂存区的内容提交到仓库

教程
git commit -m "说明"提交并附上说明
git commit -am "说明"自动暂存已跟踪文件并提交
git commit --amend修改最后一次提交
git commit --amend --no-edit追加修改到上次提交,不改说明

git diff

查看文件的具体修改内容

教程
git diff工作区与暂存区的差异
git diff --staged暂存区与最新提交的差异
git diff main feature比较两个分支
git diff --stat只显示修改统计

git rm

从工作区和暂存区删除文件

教程
git rm <文件>删除文件
git rm --cached <文件>停止跟踪但保留本地文件
git rm -r --cached <目录>停止跟踪整个目录

git mv

移动或重命名文件

教程
git mv <旧名> <新名>重命名文件

查看历史

git log

查看提交历史

教程
git log --oneline单行显示
git log --oneline --graph --all图形化显示所有分支
git log -p -- <文件>查看某个文件的修改历史
git log --author="张三"按作者筛选
git log -S "关键字"查找增删了某段代码的提交

git show

显示提交、标签等对象的详细信息

教程
git show查看最新提交
git show <提交>查看指定提交
git show <提交>:<文件>查看某版本中的文件内容

git blame

逐行显示文件的最后修改者

教程
git blame <文件>查看每一行的作者
git blame -L 10,20 <文件>只看指定行范围

git shortlog

按作者汇总提交

教程
git shortlog -sn按提交数排序统计作者

git reflog

查看 HEAD 的移动记录,用于找回丢失的提交

教程
git reflog查看引用日志
git reset --hard HEAD@{2}回到某次操作之前

撤销与回退

git restore

恢复工作区或暂存区的文件

教程
git restore <文件>丢弃工作区的修改
git restore --staged <文件>取消暂存
git restore --source=HEAD~2 <文件>把文件恢复到指定版本

git reset

移动当前分支指针,可选重置暂存区和工作区

教程
git reset --soft HEAD~1撤销提交,保留暂存
git reset HEAD~1撤销提交和暂存,保留修改
git reset --hard HEAD~1彻底回退,丢弃修改
git reset --hard origin/main与远程分支完全一致

git revert

创建一个新提交来撤销指定提交

教程
git revert <提交>撤销指定提交
git revert HEAD撤销最近一次提交
git revert -m 1 <合并提交>撤销合并提交

git clean

删除工作区中未跟踪的文件

教程
git clean -n预览将被删除的文件
git clean -fd删除未跟踪的文件和目录

分支与合并

git branch

列出、创建、重命名或删除分支

教程
git branch列出本地分支
git branch -a列出所有分支(含远程)
git branch <名称>创建分支
git branch -m <新名>重命名当前分支
git branch -d <名称>删除已合并的分支
git branch -vv查看跟踪关系

git switch

切换分支(Git 2.23+)

教程
git switch <分支>切换到分支
git switch -c <新分支>创建并切换
git switch -切换回上一个分支

git checkout

切换分支或恢复文件(旧命令)

教程
git checkout <分支>切换分支
git checkout -b <新分支>创建并切换
git checkout -- <文件>丢弃文件修改

git merge

把其他分支合并到当前分支

教程
git merge <分支>合并分支
git merge --no-ff <分支>禁止快进,保留合并提交
git merge --squash <分支>压缩为一次修改
git merge --abort放弃合并

git rebase

把当前分支的提交移到另一个基点之上

教程
git rebase main变基到 main
git rebase -i HEAD~3交互式整理最近 3 个提交
git rebase --continue解决冲突后继续
git rebase --abort放弃变基

git cherry-pick

把指定提交应用到当前分支

教程
git cherry-pick <提交>挑选单个提交
git cherry-pick A..B挑选一个范围的提交

git stash

临时储藏未提交的修改

教程
git stash push -m "说明"储藏修改
git stash -u包含未跟踪文件
git stash list查看储藏列表
git stash pop恢复并删除最近的储藏
git stash drop stash@{0}删除指定储藏

远程协作

git remote

管理远程仓库

教程
git remote -v查看远程仓库地址
git remote add origin <地址>添加远程仓库
git remote set-url origin <地址>修改远程地址
git remote remove <名称>删除远程仓库

git fetch

从远程仓库下载数据,但不合并

教程
git fetch获取默认远程的更新
git fetch --all --prune获取所有远程并清理已删除分支

git pull

获取并合并远程分支的更新

教程
git pull拉取并合并
git pull --rebase拉取并变基

git push

把本地提交推送到远程仓库

教程
git push -u origin main首次推送并设置上游
git push推送当前分支
git push origin --delete <分支>删除远程分支
git push --force-with-lease安全的强制推送
git push origin --tags推送所有标签

git tag

创建、列出、删除标签

教程
git tag列出标签
git tag -a v1.0.0 -m "说明"创建附注标签
git tag -d v1.0.0删除本地标签
git push origin --delete v1.0.0删除远程标签

git submodule

管理子模块

教程
git submodule add <地址> <路径>添加子模块
git submodule update --init --recursive初始化并拉取子模块
git submodule update --remote更新到子模块远程最新版本

进阶工具

git bisect

用二分查找定位引入 Bug 的提交

教程
git bisect start开始二分查找
git bisect bad / good标记当前提交的好坏
git bisect run npm test自动执行测试查找
git bisect reset结束查找

git worktree

在多个目录中同时检出不同分支

教程
git worktree add ../hotfix hotfix新增一个工作区
git worktree list列出工作区
git worktree remove ../hotfix删除工作区

git grep

在仓库文件中搜索文本

教程
git grep -n "TODO"搜索并显示行号
git grep "关键字" v1.0.0在历史版本中搜索

git describe

根据最近的标签生成可读的版本号

教程
git describe --tags如 v1.0.0-5-ga1b2c3d

git gc

清理无用对象并优化仓库

教程
git gc执行垃圾回收
git count-objects -vH查看仓库大小

git cat-file

查看 Git 对象的类型和内容

教程
git cat-file -t <对象>查看对象类型
git cat-file -p <对象>查看对象内容