Git命令速查手册:从基础配置到高级技巧
1. Git常用命令与场景速查手册作为开发者每天都要打交道的版本控制工具Git的命令行操作既是基本功又是效率瓶颈。我整理了这份包含高频命令、典型场景和实用技巧的速查表特别强化了git fetch等易混淆指令的解析。这份手册的特点在于按实际工作流分类非字母排序包含命令组合的典型用法标注了各参数的行为差异附常见报错解决方案1.1 基础配置与初始化安装Git后首要工作是身份配置这会影响所有提交记录git config --global user.name 你的姓名 git config --global user.email 公司邮箱 git config --global core.editor vim # 设置默认编辑器查看当前配置git config --list初始化新仓库的两种方式# 本地初始化 git init # 克隆远程仓库推荐SSH协议 git clone gitgithub.com:user/repo.git注意公司项目建议配置SSH证书而非HTTPS避免频繁输入密码。生成SSH key的命令ssh-keygen -t ed25519 -C your_emailexample.com1.2 日常代码提交流程典型开发周期中的命令序列# 查看当前变更状态养成习惯性操作 git status # 添加文件到暂存区注意路径规范 git add src/main.js # 添加单个文件 git add . # 添加所有修改慎用 # 提交到本地仓库消息格式遵循约定 git commit -m feat: 新增用户登录模块 # 推送到远程分支首次推送需建立追踪 git push -u origin feature/login避坑提示git add .会包含所有未跟踪文件建议使用git add -u只添加已跟踪文件的修改或通过.gitignore文件排除构建产物、IDE配置等。1.3 分支管理实战分支操作是Git的核心价值所在# 查看所有分支远程分支用git fetch更新 git branch -av # 创建并切换分支推荐单条命令完成 git checkout -b hotfix/ssl-cert # 删除已合并的分支-d参数更安全 git branch -d feature/old # 强制删除未合并分支慎用 git branch -D experiment分支合并的三种策略# 快速合并线性历史 git merge feature/login # 变基合并整洁历史线 git rebase main # 三方合并解决冲突 git merge --no-ff feature/payment经验法则团队协作使用merge个人分支使用rebase。执行rebase前务必保证工作区干净。2. git fetch深度解析2.1 与git pull的本质区别多数开发者混淆的两个命令git fetch origin # 仅下载远程变更到本地仓库 git pull origin main # fetch merge关键差异点行为git fetchgit pull网络操作仅下载下载合并工作区影响无可能产生合并冲突安全系数高可预览变更低直接修改2.2 高级fetch用法查看远程分支更新情况git fetch --dry-run获取特定分支到本地不自动合并git fetch origin feature/chat:feature/chat-local清理已删除的远程分支引用git fetch --prune调试技巧添加-v参数查看详细传输过程如git fetch -v3. 典型场景解决方案3.1 撤销操作大全# 撤销工作区修改危险操作 git checkout -- file.txt # 撤销暂存区修改回退到工作区 git reset HEAD file.txt # 修改最后一次提交未push时 git commit --amend -m 新的提交信息 # 回退到指定提交三种模式 git reset --soft HEAD~1 # 保留修改到暂存区 git reset --mixed HEAD~1 # 保留修改到工作区默认 git reset --hard HEAD~1 # 彻底丢弃修改3.2 冲突解决流程合并时出现冲突Auto-merging src/index.js CONFLICT (content): Merge conflict in src/index.js手动编辑文件保留需要的代码冲突标记为到标记冲突已解决git add src/index.js git commit # 不要加-m参数使用自动生成的合并消息专业工具推荐配置git mergetool使用VS Code或Beyond Compare进行可视化冲突解决3.3 找回丢失的提交查看操作历史含已删除的commitgit reflog重置到特定操作点git reset --hard HEAD{5}4. 高效工作技巧4.1 别名配置在~/.gitconfig中添加[alias] st status ci commit br branch co checkout df diff lg log --graph --prettyformat:%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%an%Creset --abbrev-commit --daterelative4.2 交互式操作选择性提交部分修改git add -p # 交互式选择代码块修改多个历史提交git rebase -i HEAD~3 # 编辑最近3个提交4.3 子模块管理添加依赖库git submodule add https://github.com/jquery/jquery.git lib/jquery更新所有子模块git submodule update --init --recursive5. 企业级实践建议5.1 提交消息规范推荐格式类型(范围): 简要描述 详细说明可选 关联Issue: #123常用类型feat新功能fix错误修复docs文档变更style代码格式refactor重构test测试相关5.2 代码审查流程创建特性分支git checkout -b feature/oauth2开发完成后推送到远程git push origin feature/oauth2在Git平台创建Pull Request根据审查意见修改后git commit --amend # 修正最后一次提交 git push -f # 强制更新仅限特性分支5.3 大型仓库优化部分克隆仅获取最新历史git clone --depth1 https://github.com/vuejs/vue.git稀疏检出只下载指定目录git init vue-core cd vue-core git remote add origin https://github.com/vuejs/vue.git git config core.sparsecheckout true echo src/core .git/info/sparse-checkout git pull origin main6. 疑难问题排查6.1 常见错误处理问题1fatal: refusing to merge unrelated histories# 当合并两个独立开发的仓库时出现 git merge --allow-unrelated-histories branch-name问题2error: failed to push some refs# 通常因远程有本地不存在的提交导致 git pull --rebase origin main git push问题3warning: LF will be replaced by CRLF# 统一换行符风格Windows开发建议 git config --global core.autocrlf true6.2 性能优化清理历史大文件# 使用BFG工具清理需Java环境 java -jar bfg.jar --strip-blobs-bigger-than 100M repo.git重建本地仓库git gc --aggressive git repack -a -d --depth250 --window2507. 可视化工具链虽然命令行是核心但合理使用GUI工具能提升效率GitKraken跨平台图形客户端SourceTree免费的Git管理工具VS Code Git插件内置的版本控制功能Tig终端下的Git浏览器brew install tig配置差异对比工具git config --global diff.tool vscode git config --global difftool.vscode.cmd code --wait --diff $LOCAL $REMOTE