Git 知识速查表
本页面汇总了 Git 版本控制中最常用的命令,方便快速查阅。
基础配置
git config --global user.name "Your Name"
git config --global user.email "your@email.com"
git config --global core.editor vim
git config --list # 查看配置
基础操作
初始化和克隆
git init # 初始化仓库
git clone <url> # 克隆仓库
git clone <url> <folder> # 克隆到指定目录
文件操作
git status # 查看状态
git add <file> # 添加文件到暂存区
git add . # 添加所有文件
git add -p # 交互式添加
git rm <file> # 删除文件
git mv <old> <new> # 移动/重命名文件
提交
git commit -m "message" # 提交
git commit -am "message" # 添加并提交(已跟踪文件)
git commit --amend # 修改最后一次提交
git commit --amend -m "new message" # 修改提交信息
分支操作
git branch # 列出分支
git branch <name> # 创建分支
git branch -d <name> # 删除分支
git branch -D <name> # 强制删除
git branch -m <old> <new> # 重命名分支
git checkout <branch> # 切换分支
git checkout -b <branch> # 创建并切换
git switch <branch> # 切换分支(Git 2.23+)
git switch -c <branch> # 创建并切换
git merge <branch> # 合并分支
git merge --abort # 取消合并
git rebase <branch> # 变基
查看历史
git log # 查看提交历史
git log --oneline # 简洁格式
git log --graph # 图形化显示
git log -n <number> # 查看最近 n 条
git log --author="name" # 按作者筛选
git log --grep="keyword" # 按提交信息筛选
git diff # 查看未暂存的修改
git diff --staged # 查看已暂存的修改
git diff <commit1> <commit2> # 比较两个提交
git show <commit> # 查看提交详情
git blame <file> # 查看文件每行的修改
撤销操作
git checkout -- <file> # 撤销未暂存的修改
git reset HEAD <file> # 取消暂存
git reset --soft HEAD^ # 撤销提交,保留修改
git reset --mixed HEAD^ # 撤销提交和暂存(默认)
git reset --hard HEAD^ # 撤销提交,丢弃修改(危险!)
git revert <commit> # 创建新提交来撤销
远程仓库
git remote -v # 查看远程仓库
git remote add <name> <url> # 添加远程仓库
git remote remove <name> # 删除远程仓库
git fetch <remote> # 获取远程更新
git pull <remote> <branch> # 拉取并合并
git push <remote> <branch> # 推送
git push -u <remote> <branch> # 推送并设置上游
git push <remote> --delete <branch> # 删除远程分支
暂存
git stash # 暂存当前修改
git stash push # 同上
git stash list # 查看暂存列表
git stash pop # 恢复并删除最近暂存
git stash apply # 恢复修改(保留暂存)
git stash drop # 删除最近暂存
git stash clear # 清空所有暂存
标签
git tag # 列出标签
git tag <name> # 创建轻量标签
git tag -a <name> -m "msg" # 创建附注标签
git tag -d <name> # 删除本地标签
git push <remote> <tag> # 推送标签
git push <remote> --delete <tag> # 删除远程标签
子模块
git submodule add <url> <path> # 添加子模块
git submodule init # 初始化子模块
git submodule update # 更新子模块
git submodule update --init # 初始化并更新
git submodule deinit <path> # 移除子模块
Git Hooks
常用钩子位置:~/.git/hooks/ 或项目 .git/hooks/
| 钩子 | 说明 |
|---|---|
| pre-commit | 提交前检查 |
| prepare-commit-msg | 提交信息准备 |
| commit-msg | 提交信息验证 |
| post-commit | 提交后操作 |
| pre-push | 推送前检查 |
忽略文件
创建 .gitignore 文件:
# 忽略所有 .log 文件
*.log
# 忽略 node_modules 目录
node_modules/
# 忽略特定文件
secret.txt
# 忽略特定目录
build/
dist/
# 忽略某类型文件
*.tmp
# 强制跟踪某个文件
!important.log
高级操作
交互式变基
git rebase -i HEAD~n # 修改最近 n 个提交
交互命令:
pick- 使用提交reword- 修改提交信息edit- 暂停以修改提交squash- 与前一个合并fixup- 丢弃提交信息drop- 删除提交
清理
git clean -n # 预览要删除的文件
git clean -f # 删除未跟踪文件
git clean -fd # 删除文件和目录
git gc # 垃圾回收
git prune # 清理不可达对象
搜索
git grep "keyword" # 搜索文件内容
git grep -n "keyword" # 显示行号
git grep -c "keyword" # 统计次数
git log -S "keyword" # 搜索提交内容
git log --all --oneline --grep="keyword" # 搜索提交信息
工作流
Git Flow
main- 生产分支develop- 开发分支feature/*- 功能分支release/*- 发布分支hotfix/*- 热修复分支
GitHub Flow
- 从
main创建分支 - 在分支上开发并提交
- 开启 Pull Request
- 审核并合并到
main - 部署
常见问题
解决冲突
- 手动编辑冲突文件
- 删除冲突标记
<<<<<<<,=======,>>>>>>> git add <file>标记为已解决git commit完成合并
撤销合并
git merge --abort # 未提交时撤销
git revert -m 1 <merge-commit> # 撤销合并提交