1. Git 快速入门实习生必备的版本控制生存指南刚进入技术团队实习时Git 可能是最让你手足无措的工具之一。记得我第一次提交代码时不小心把整个项目历史都搞乱了最后不得不请 mentor 帮忙救火。这份指南就是我希望当时能拥有的 Git 生存手册 - 从零开始用实习生最常遇到的场景带你避开那些我踩过的坑。Git 作为分布式版本控制系统核心价值在于三点代码版本管理避免文件命名混乱、团队协作解决多人修改冲突和错误回退救命稻草。不同于 SVN 等集中式系统Git 的每个开发者都拥有完整的仓库副本这意味着你可以在本地自由实验而不会影响他人 - 这对实习生特别友好。关键认知Git 不是 GitHub。Git 是工具本身GitHub/GitLab 是基于 Git 的代码托管平台。就像 Word 和网盘的关系。2. 开发环境快速配置2.1 安装与基础配置Windows 用户建议下载 Git for Windows 安装时注意勾选 Add Git Bash to PATH否则后续命令需全路径执行选择 VSCode 作为默认编辑器比 vim 对新手友好换行符处理选择 Checkout as-is, commit as-is避免跨平台换行符问题安装完成后第一件事是配置身份信息git config --global user.name 你的名字 git config --global user.email 公司邮箱避坑提示邮箱务必使用公司邮箱而非个人邮箱否则后续可能无法关联代码贡献统计。2.2 SSH 密钥配置连接远程仓库必备生成密钥对执行前先确认是否已有 ~/.ssh/id_rsa 文件ssh-keygen -t rsa -b 4096 -C your_emailexample.com将公钥添加到 Git 平台GitHub/GitLab复制cat ~/.ssh/id_rsa.pub输出内容在平台设置 - SSH Keys 处添加测试连接ssh -T gitgithub.com # GitHub ssh -T gitgitlab.com # GitLab常见问题排查出现 Permission denied检查 ssh-agent 是否运行eval $(ssh-agent -s)提示密钥已吊销重新生成密钥并更新平台配置3. 日常开发工作流详解3.1 仓库克隆与基础操作克隆项目两种方式对比git clone https://github.com/owner/repo.git # HTTPS需每次输密码 git clone gitgithub.com:owner/repo.git # SSH推荐基础操作四件套git status # 查看当前状态新手建议频繁使用 git add . # 添加所有修改到暂存区 git commit -m 描述 # 提交到本地仓库 git push # 推送到远程实习生黄金法则每次 push 前先 pull我见过太多因未同步最新代码导致的合并冲突。3.2 分支管理实战查看分支git branch -vv # 查看本地分支及跟踪关系 git branch -a # 查看所有分支含远程创建功能分支规范示例git checkout -b feat/add-login-module # 功能分支 git checkout -b fix/header-bug # 修复分支分支切换注意事项未提交的修改会随切换分支带过去可用git stash暂存VSCode 用户可用左下角分支按钮快速切换3.3 代码合并的两种方式Merge保留完整历史git checkout main git merge feature-branch # 会产生新的合并提交Rebase线性历史git checkout feature-branch git rebase main # 将当前分支修改重新播放在main之后选择策略团队协作分支用 merge历史清晰个人功能分支用 rebase历史简洁血泪教训永远不要在公共分支如 main上执行 rebase这会导致其他成员历史混乱。4. 实习生常见场景解决方案4.1 误操作回退指南撤销未 add 的修改git checkout -- filename # 单个文件 git checkout -- . # 全部修改撤销已 add 未 commitgit reset HEAD filename # 取消暂存撤销最近一次 commitgit reset --soft HEAD~1 # 保留修改 git reset --hard HEAD~1 # 彻底丢弃4.2 冲突解决流程当 git pull 提示冲突时打开冲突文件搜索标记与代码作者协商保留哪些内容删除冲突标记并保存标记冲突已解决git add conflicted_file git commit # 不要修改默认的合并信息4.3 只合并特定提交cherry-pick当只需要合并另一个分支的某个提交时git log feature-branch # 复制目标提交的hash前7位 git checkout main git cherry-pick a1b2c3d5. 高级技巧与规范建议5.1 提交信息规范好的提交信息结构类型(范围): 简要描述50字符内 详细说明72字符换行 - 修改原因 - 影响范围常用类型feat新功能fixbug修复docs文档变更style代码格式refactor重构示例fix(auth): 解决登录页面token过期问题 - 将token有效期从1小时延长至4小时 - 增加过期前30分钟刷新逻辑5.2 Git 钩子自动检查在 .git/hooks/pre-commit 中添加#!/bin/sh # 禁止提交console.log if git diff --cached | grep console.log; then echo ERROR: 请移除调试代码再提交 exit 1 fi5.3 图形化工具推荐VSCode Git 插件内置的图形化界面足够日常使用GitLens增强版代码历史查看Sourcetree适合复杂的合并操作可视化6. 企业级开发注意事项6.1 代码审查流程标准 GitFlow 工作流从 develop 拉取功能分支开发完成后推送到远程创建 Merge Request/Pull Request团队成员评审后合并实习生特别提示MR 描述应包含修改背景测试验证方式影响范围分析6.2 敏感信息防护绝对禁止提交的内容配置文件中的密码/密钥个人隐私数据许可证文件急救措施如果误提交git filter-branch --force --index-filter \ git rm --cached --ignore-unmatch sensitive-file \ --prune-empty --tag-name-filter cat -- --all6.3 大型仓库优化当仓库历史很大时git config --global core.preloadindex true # 加速索引 git config --global core.fscache true # 文件系统缓存部分克隆仅获取最近历史git clone --depth 1 gitgithub.com:owner/repo.git7. 我的实战心得每天开始工作前先git fetch --all同步所有远程分支信息复杂合并前先用git checkout -b temp-merge创建临时分支测试遇到问题先查git reflog找丢失的提交重要操作前先git branch backup-branch创建备份使用.gitignore文件避免误提交IDE配置模板参考 github/gitignore 最后分享一个我自用的 alias 配置添加到 ~/.gitconfig[alias] lg log --color --graph --prettyformat:%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%an%Creset --abbrev-commit undo reset HEAD~1 --mixed amend commit --amend --no-edit