Git基础命令与团队协作实战指南 1. Git入门为什么每个开发者都需要掌握这些命令刚接触代码版本控制时我完全不明白为什么资深开发者总把先commit一下挂在嘴边。直到有次误删了三天的工作成果才真正体会到Git的价值——它不仅是代码备份工具更是团队协作的安全网。Git作为分布式版本控制系统能完整记录每次代码变更让你随时回退到任意历史版本。对于Windows用户建议安装Git for Windows包含Git BashmacOS自带git命令Linux用户通过包管理器安装如sudo apt install git。安装后第一件事是配置用户信息git config --global user.name 你的名字 git config --global user.email 你的邮箱重要提示这里的邮箱建议与代码托管平台如GitHub注册邮箱一致否则贡献统计可能无法关联到你的账号2. 仓库基础操作从创建到第一次提交2.1 初始化仓库的两种场景场景一从零开始新项目mkdir my-project cd my-project git init场景二接手已有项目git clone https://github.com/username/repo.git cd repo实际经验克隆仓库时如果遇到速度慢的问题可以尝试替换URL为SSH形式gitgithub.com:username/repo.git或配置国内镜像2.2 首次提交的标准流程创建或修改文件后查看变更状态git status将有价值的变更添加到暂存区git add 文件名 # 添加单个文件 git add . # 添加所有变更提交到本地仓库git commit -m 描述性提交信息提交信息规范建议使用动词对象的格式如修复登录页面的CSS错位问题。避免使用模糊的更新或修复bug3. 日常开发中的高频命令3.1 分支管理策略创建功能分支是团队协作的基础git branch # 查看本地分支 git branch new-feature # 创建分支 git checkout new-feature # 切换分支 # 简写版 git checkout -b hotfix # 创建并立即切换合并分支时的黄金法则git checkout main # 先切换到主分支 git merge new-feature # 合并指定分支避坑指南合并前务必先pull最新代码。遇到冲突时可以用git mergetool启动图形化工具解决3.2 撤销操作的三种境界撤销工作区修改危险不可逆git checkout -- 文件名撤销暂存区的add操作git reset HEAD 文件名修改最后一次commit仅限未push的情况git commit --amend3.3 查看历史的艺术基础查看git log实用变体git log --oneline --graph # 简洁版分支图示 git log -p # 显示具体修改内容 git log --since2023-01-01查找特定修改git blame 文件名 # 查看每行最后修改者 git show commit_id # 查看某次提交详情4. 团队协作必备技能4.1 远程仓库操作三板斧获取最新代码git pull origin main上传本地提交git push origin 分支名处理常见错误# 当push被拒绝时通常因为远程有更新 git pull --rebase origin main git push origin 分支名4.2 临时保存工作现场当需要紧急切换分支但当前工作未完成时git stash # 保存工作现场 git stash list # 查看保存列表 git stash pop # 恢复最近一次保存进阶技巧git stash save 描述信息 # 给stash加备注 git stash apply stash{1} # 恢复指定stash5. 那些教科书不会告诉你的实战经验5.1 忽略文件的正确姿势在项目根目录创建.gitignore文件常见配置示例# 忽略所有.class文件 *.class # 但特别保留Important.class !Important.class # 忽略整个目录 build/特别注意已经跟踪的文件需要先执行git rm --cached 文件名才能被忽略规则生效5.2 大型文件处理技巧Git默认不适合管理大文件超过100MB解决方案使用git lfs扩展需安装配置通过.gitattributes指定大文件类型*.psd filterlfs difflfs mergelfs -text5.3 命令行增强工具tig交互式git日志查看器lazygit终端图形界面git-extras提供更多实用命令安装示例# 在macOS上安装tig brew install tig6. 遇到报错怎么办常见问题速查表错误信息可能原因解决方案fatal: not a git repository当前目录不是git仓库确认是否在正确目录或执行git initerror: failed to push some refs远程有本地没有的新提交先执行git pull --rebasemerge conflict合并时文件冲突手动解决冲突后git addcommitYour local changes would be overwritten切换分支时有未提交修改使用git stash保存工作现场我强烈建议每个开发者都建立自己的git急救手册记录遇到过的特殊案例和解决方案。经过三年团队协作我的个人笔记里最常翻看的是这些场景误删分支恢复git refloggit checkout -b 新分支 commit_id修改历史提交信息交互式rebase谨慎使用清理历史大文件git filter-branch或BFG工具