一、基础初始化与配置
# 仓库初始化
git init --template=<template_directory> # 使用自定义模板初始化
git init --bare <directory> # 创建裸仓库(共享仓库)
git clone --mirror <url> # 创建完整镜像仓库
git clone -b <branch> <url> # 克隆时指定分支
# 配置管理
git config --global user.name "<name>" # 设置全局用户名
git config --global user.email "<email>" # 设置全局邮箱
git config --global core.editor "code --wait" # 设置VS Code为默认编辑器
git config --global help.autocorrect 1 # 命令自动修正
git config --global credential.helper store # 永久保存凭证(需谨慎)
git config --global init.defaultBranch main # 设置默认分支名称
二、文件与修改管理
bash
# 基础操作
git add <file> # 添加指定文件
git add . # 添加所有文件(慎用)
git add -u # 更新已跟踪文件
git add -A # 添加所有修改(等价于 git add . + git add -u)
git add --patch # 交互式分块添加
git rm --cached <file> # 从暂存区移除文件
# 高级操作
git restore <file> # 恢复工作区文件(Git 2.23+)
git restore --staged <file> # 取消暂存文件
git clean -fd # 删除未跟踪文件
git mv <old> <new> # 重命名/移动文件
三、分支与合并进阶
bash
# 分支管理
git branch # 列出本地分支
git branch -r # 列出远程分支
git branch -a # 列出所有分支
git branch <new-branch> # 创建新分支
git checkout -b <new-branch> # 创建并切换分支
git checkout -B <new-branch> # 强制创建并切换分支
git branch -d <branch> # 删除本地分支
git push origin --delete <branch> # 删除远程分支
git branch --set-upstream-to=origin/<branch> <local-branch> # 设置上游分支
# 合并操作
git merge <branch> # 合并分支(可能产生合并提交)
git merge --no-ff <branch> # 禁用快进合并
git merge --abort # 终止正在进行的合并
git merge -Xtheirs # 合并时优先使用对方修改
git merge -Xours # 合并时优先使用当前分支修改
# 变基操作
git rebase <base-branch> # 变基到目标分支
git rebase -i HEAD~n # 交互式变基
git rebase --continue # 冲突解决后继续变基
git rebase --abort # 终止变基操作
git rebase --root # 从项目起点开始变基
git rebase --rebase-merges # 保留合并提交(Git 2.22+)
# Cherry-pick 操作
git cherry-pick <commit> # 应用指定提交到当前分支
git cherry-pick --abort # 终止正在进行的cherry-pick
git cherry-pick --continue # 冲突解决后继续
git cherry-pick --quit # 完全退出cherry-pick
git cherry-pick -x <commit> # 保留原始提交引用
四、远程仓库操作大全
bash
# 远程管理
git remote add <name> <url> # 添加远程仓库
git remote rm <name> # 删除远程仓库
git remote set-url <name> <new-url> # 修改远程仓库URL
git remote -v # 查看所有远程仓库
git remote set-head origin <branch> # 设置远程默认分支
git remote prune origin # 删除远程已不存在的分支引用
# 数据同步
git fetch <remote> # 获取远程更新
git pull <remote> <branch> # 拉取并合并远程分支
git pull --rebase <remote> <branch> # 拉取并通过变基合并
git push <remote> <branch> # 推送本地分支到远程
git push --force-with-lease # 安全强制推送(推荐)
git push origin --tags # 推送所有标签
git push origin :<branch> # 删除远程分支(危险操作)
git push origin --mirror # 镜像推送所有分支和标签
五、历史操作全解析
bash
# 提交管理
git commit -m "message" # 提交暂存区内容
git commit -am "message" # 直接提交工作区所有修改
git commit --amend # 修改最后一次提交
git commit --allow-empty # 创建空提交
git commit --fixup=<commit> # 创建修复提交
git commit --squash=<commit> # 合并多个提交
# 历史查看
git log # 查看完整提交历史
git log --oneline # 单行显示提交历史
git log --graph # 图形化显示分支历史
git log -p <file> # 查看文件修改历史
git blame <file> # 查看文件每行修改记录
git reflog # 查看HEAD操作历史
git show <commit> # 查看指定提交详情
# 历史修改
git reset HEAD <file> # 从暂存区移除文件
git reset --hard HEAD~n # 回退n次提交(危险!)
git revert <commit> # 创建反向提交
git filter-branch --tree-filter 'rm -f *.log' HEAD # 文件历史过滤
git replace <commit> <new-commit> # 替换指定提交
六、冲突解决专家模式
bash
# 冲突检测
git diff --name-only --diff-filter=U # 列出所有冲突文件
git diff --base <file> # 显示基础版本与工作区对比
# 冲突解决
git mergetool --tool=vscode # 指定冲突解决工具
git checkout --conflict=diff3 <file> # 显示三方合并格式
git rerere # 启用冲突解决记录
# 储藏操作
git stash # 储藏当前修改
git stash pop # 恢复最近储藏
git stash list # 查看储藏列表
git stash drop <stash> # 删除指定储藏
七、子模块与嵌套仓库
bash
# 子模块管理
git submodule add <url> <path> # 添加子模块
git submodule init # 初始化子模块
git submodule update # 更新子模块
git submodule foreach 'git pull origin master' # 批量更新子模块
git submodule sync # 同步子模块URL
# 嵌套仓库
git worktree add <path> <branch> # 创建关联工作区
git worktree list # 列出所有关联工作区
git worktree remove # 删除关联工作区
八、高级调试与维护
bash
# 提交分析
git bisect start # 开始二分查找
git bisect bad # 标记当前提交为有问题
git bisect good <commit> # 标记已知正常提交
git bisect reset # 结束二分查找
git verify-commit <commit> # 验证提交签名(GPG)
# 对象分析
git cat-file -p <commit> # 查看任意Git对象内容
git fsck # 检查仓库完整性
git gc # 垃圾回收(优化仓库)
# 性能优化
git config --global pack.windowMemory "1g" # 设置打包内存限制
git config --global pack.packSizeLimit "512m" # 设置包文件大小限制
九、特殊场景解决方案
bash
# 加密存储
git config --global credential.helper 'store --file ~/.git-credentials' # 加密存储凭证
git config --global core.sshCommand 'ssh -o IdentitiesOnly=yes -i ~/.ssh/id_rsa_encrypted' # 使用加密密钥
# 大文件管理
git lfs track "*.psd" # 跟踪大文件(需安装Git LFS)
git annex init # 初始化Git Annex(大文件管理)
# 分布式协作
git daemon --verbose --export-all --base-path=.git # 启动Git守护进程
git remote add --mirror=push origin <url> # 设置镜像推送
十、完整工作流程示例
bash
# 安全变基流程
git checkout feature
git fetch origin main
git rebase origin/main
# 解决冲突后:
git add .
git rebase --continue
git push -f origin feature # 强制推送(需确保无其他人使用)
# Cherry-pick 完整流程
git checkout -b hotfix/issue-123 main
git cherry-pick -x abc123def # 应用指定提交
# 解决冲突后:
git add .
git cherry-pick --continue
git push origin hotfix/issue-123
# 紧急修复流程
git checkout -b hotfix/issue-456 main
# 进行紧急修复...
git commit -m "Fix critical issue #456"
git checkout main
git merge --no-ff hotfix/issue-456
git tag -a v1.0.1 -m "Release v1.0.1"
git push origin main --tags
⚠️ 终极注意事项:
公共分支历史修改需全员知晓(使用前务必沟通)
强制推送前使用 git push --force-with-lease 替代 -f
复杂操作前建议创建备份分支 git branch backup-before-rebase
使用 git config --global core.editor "code --wait" 设置可视化编辑器
定期运行 git fsck --full 验证仓库完整性
重要操作前建议使用 git worktree add 创建独立工作副本