一、基础操作场景
1. 仓库初始化
# 本地初始化
git init
git init --bare # 创建裸仓库(无工作区)
git init -b main # 指定默认分支名
# 克隆远程仓库
git clone https://github.com/user/repo.git
git clone --depth 1<url># 浅克隆(仅最新历史)
git clone --branch develop <url># 克隆特定分支
2. 文件状态管理
git status # 标准状态
git status -s # 简洁状态(??=未跟踪,A=已暂存)
git status -vv # 显示详细差异
# 文件追踪
gitadd index.html # 添加单个文件
gitadd.# 添加所有修改
gitadd -u # 仅添加已跟踪文件
gitadd -p # 交互式添加(选择性暂存)
3. 提交操作
git commit -m "Initial commit"# 基础提交
git commit -am "Quick commit"# 跳过暂存直接提交(仅限已跟踪文件)
git commit --amend # 修改最近提交(可修改信息或内容)
git commit --allow-empty # 创建空提交(用于触发CI)
二、分支管理场景
1. 分支操作
git branch # 查看本地分支
git branch -r # 查看远程分支
git branch -a # 查看所有分支
git branch feature/login # 创建分支
git checkout -b hotfix # 创建并切换分支(旧版)
git switch -c dev # 创建并切换分支(推荐)
git branch -d feature/old # 删除已合并分支
git branch -D feature/abandoned # 强制删除未合并分支
2. 分支合并
git merge feature/payment # 普通合并
git merge --no-ff feature/auth # 禁用快进合并(保留分支历史)
git merge --squash feature/ui # 压缩合并(多个提交合并为1个)
# 合并冲突解决
git mergetool # 使用配置的冲突解决工具
gitdiff --name-only --diff-filter=U # 查看冲突文件列表
3. 变基操作
git rebase main # 将当前分支变基到main
git rebase -i HEAD~3 # 交互式变基(修改最近3个提交)
# 变基操作指令:
# p/pick = 保留提交
# r/reword = 修改提交信息
# e/edit = 修改提交内容
# s/squash = 合并到前一个提交
# f/fixup = 合并并丢弃提交信息
三、远程协作场景
1. 远程仓库管理
git remote add origin <url># 添加远程仓库
git remote -v # 查看远程仓库
git remote set-url origin <new-url># 修改远程URL
git remote prune origin # 清理本地无效远程分支引用
2. 推送操作
git push origin main # 推送本地分支
git push -u origin feature # 推送并设置上游分支
git push --force-with-lease # 安全强制推送(避免覆盖他人提交)
git push --all # 推送所有分支
git push --tags # 推送所有标签
3. 拉取操作
git fetch origin # 获取远程更新(不合并)
git pull # 拉取并合并(= fetch + merge)
git pull --rebase # 拉取并变基(推荐)
git pull origin main:dev # 拉取远程main到本地dev
四、历史管理场景
1. 查看历史
git log # 标准日志
git log --oneline # 简洁单行日志
git log --graph --decorate # 图形化分支历史
git log -p README.md # 查看文件修改历史
git log -S "search_term"# 按内容搜索提交
git log --since="2023-01-01"# 按时间过滤
2. 版本回退
git reset HEAD~1 # 回退提交(保留修改)
git reset --soft HEAD~1 # 回退提交(保留修改到暂存区)
git reset --hard HEAD~1 # 彻底回退(丢弃修改)
# 恢复删除的文件
git checkout <commit> -- path/to/file
3. 撤销操作
git restore README.md # 撤销工作区修改
git restore --staged README.md # 撤销暂存区修改
git revert <commit># 创建反向提交(安全撤销)
五、高级应用场景
1. 储藏操作(Stash)
git stash # 储藏当前修改
git stash push -m "WIP"# 命名储藏
git stash list # 查看储藏列表
git stash apply stash@{1}# 应用指定储藏
git stash pop # 应用并删除最新储藏
git stash drop stash@{0}# 删除储藏
2. 标签管理
git tag v1.0.0 # 轻量标签
git tag -a v1.1.0 -m "Release"# 附注标签
git push origin v1.1.0 # 推送单个标签
git push origin --tags # 推送所有标签
git tag -d v0.9 # 删除本地标签
git push origin :refs/tags/v0.9 # 删除远程标签
3. 子模块管理
git submodule add<url> libs # 添加子模块
git submodule update --init # 初始化子模块
git submodule update --remote # 更新子模块到最新
git submodule foreach 'git pull'# 批量更新所有子模块
六、调试与诊断场景
1. 二分法调试
git bisect start # 开始二分
git bisect bad HEAD # 标记当前为坏版本
git bisect good v1.0 # 标记已知好版本
# 测试后标记结果
git bisect good/bad
git bisect reset # 结束二分
2. 文件追溯
git blame index.html # 逐行查看修改者
git blame -L 10,20 app.js # 查看指定行范围
git show <commit># 查看提交详情
3. 数据恢复
git reflog # 查看操作历史
git checkout HEAD@{1}# 切换到前一个状态
git branch recovery HEAD@{5}# 从reflog创建分支
七、配置与优化场景
1. 全局配置
git config --global user.name "John"
git config --global user.email "john@example.com"
git config --global core.editor "code --wait"
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'"
2. 仓库优化
git gc # 垃圾回收
git repack -ad # 重新打包对象
gitfsck --full # 检查仓库完整性
3. 大文件处理(LFS)
git lfs install# 初始化LFS
git lfs track "*.psd"# 跟踪大文件类型
gitadd .gitattributes # 提交跟踪配置
八、工作流实践
1. Git Flow

git flow init # 初始化Git Flow
git flow feature start login # 启动新功能
git flow feature finish login # 完成功能开发
2. GitHub Flow
git checkout -b feature # 创建功能分支
# 开发后创建PR
git push origin feature
# 通过后合并到main
3. Rebase工作流
git checkout feature
git fetch origin
git rebase origin/main # 变基到最新main
# 解决冲突
git rebase --continue
git push -f # 强制更新分支
九、高级技巧
1. 部分暂存
gitadd -p # 交互式选择修改片段
2. 提交范围操作
git cherry-pick A^..C # 选择提交范围(A到C)
3. 重写历史
git filter-branch --tree-filter 'rm -f password.txt' HEAD
4. 补丁操作
git format-patch HEAD~2 # 生成最近2个提交的补丁
git am *.patch # 应用补丁
十、故障处理
1. 撤销误操作
git reset --soft ORIG_HEAD # 撤销错误的合并/变基
2. 恢复删除分支
git checkout -b recovery $(git reflog |grep'commit: Created'|awk'{print $1}')
3. 修复损坏仓库
gitfsck --full
git prune
git repack -a -d -f --depth=50 --window=250
完整命令速查表
|
类别 |
命令 |
功能描述 |
|---|---|---|
| 基础操作 | git init |
初始化仓库 |
git clone <url> |
克隆远程仓库 | |
git add <file> |
添加文件到暂存区 | |
git commit -m "msg" |
提交更改 | |
| 分支管理 | git switch -c <branch> |
创建并切换分支 |
git merge --no-ff <branch> |
非快进合并 | |
git rebase <base> |
变基操作 | |
| 远程协作 | git push -u origin <branch> |
推送并设置上游分支 |
git pull --rebase |
变基式拉取 | |
git fetch --prune |
清理无效远程分支引用 | |
| 历史操作 | git reset --hard HEAD~1 |
回退到上一版本 |
git revert <commit> |
创建撤销提交 | |
git cherry-pick <commit> |
选择性应用提交 | |
| 调试诊断 | git bisect start |
启动二分调试 |
git reflog |
查看操作历史 | |
git blame <file> |
文件逐行追溯 | |
| 高级功能 | git stash -u |
储藏未跟踪文件 |
git submodule update --remote |
更新子模块 | |
git filter-branch |
批量重写历史 |
最佳实践原则
-
提交规范:
feat(module): add login function ^ ^ ^ | | |- 简要描述 | |------- 作用域 |------------ 类型(feat/fix/docs/ci) -
分支策略:
main:生产环境代码
develop:集成开发分支
feature/*:功能开发分支
hotfix/*:紧急修复分支
-
协作规则:
-
使用
--force-with-lease代替--force -
优先使用
rebase保持历史线性 -
PR/MR 需通过 CI 测试和 Code Review
-
-
安全建议:
git config --global transfer.fsckobjects true# 传输时检查对象 git config --global receive.fsckObjects true# 接收时检查对象
掌握这些命令组合,可覆盖 95% 的日常开发场景。建议配合
.gitconfig别名提升效率,例如:[alias] lol = log --graph --decorate --oneline st = status -sb cm = commit -m

被折叠的 条评论
为什么被折叠?



