跳到主要内容

Git 知识速查表

本页面汇总了 Git 版本控制中最常用的命令,方便快速查阅。

基础配置

git config --global user.name "Your Name"
git config --global user.email "[email protected]"
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

  1. main 创建分支
  2. 在分支上开发并提交
  3. 开启 Pull Request
  4. 审核并合并到 main
  5. 部署

常见问题

解决冲突

  1. 手动编辑冲突文件
  2. 删除冲突标记 <<<<<<<, =======, >>>>>>>
  3. git add <file> 标记为已解决
  4. git commit 完成合并

撤销合并

git merge --abort           # 未提交时撤销
git revert -m 1 <merge-commit> # 撤销合并提交