从零开始学Git:常用命令与团队协作实战指南
从零开始学Git常用命令与团队协作实战指南无论是个人项目备份还是多人协作开发Git都是现代软件工程的必备技能。本文带你从安装到精通一步步掌握Git核心用法。一、为什么要学Git在真实的开发场景中你可能遇到过这些问题代码改坏了想回退只能靠复制文件夹手动恢复多人同时修改一个文件后写的覆盖了前面的成果想试验一个新功能又怕影响稳定版本Git —— 一款分布式版本控制系统完美解决以上痛点。它不仅能记录文件的每一次变更还能让多人并行开发互不干扰。二、Git安装与初次配置2.1 安装GitWindows从 Git官网 下载安装包一路默认安装即可。macOSbrew install git或直接下载安装包。Linux (Ubuntu/Debian)sudo apt install git安装完成后打开终端Windows下使用Git Bash输入git--version看到版本号表示安装成功。2.2 配置用户名和邮箱Git每次提交都会记录操作者身份需要全局设置gitconfig--globaluser.name你的名字gitconfig--globaluser.email你的邮箱查看所有配置gitconfig--list三、Git核心概念图解理解三个区域Git就掌握了一半工作区 (Working Directory) -- 暂存区 (Stage/Index) -- 版本库 (Repository) (你正在编辑的文件夹) (临时存放待提交的改动) (已提交的永久历史)工作区你电脑里看到的项目文件夹暂存区通过git add把修改放入暂存区版本库通过git commit把暂存区内容提交到历史仓库四、基本操作从零开始管理项目4.1 初始化一个新仓库# 新建项目文件夹mkdirmy-projectcdmy-project# 初始化为Git仓库gitinit执行后当前目录下会生成一个隐藏的.git文件夹这是Git的“数据库”不要乱删。4.2 第一次提交新建一个文件hello.txt内容写Hello Git添加到暂存区git add hello.txt提交到版本库git commit -m 第一次提交添加hello.txt常用查看状态命令git status查看工作区和暂存区状态git log查看提交历史记录4.3 修改文件与版本回退修改hello.txt内容为Hello World, I love Git然后提交gitaddhello.txtgitcommit-m修改hello内容如果想回退到上一个版本gitreset--hardHEAD^# 回退到前一版本gitreset--hardcommit-id# 回退到指定commitHEAD代表当前版本HEAD^上一个HEAD^^上两个也可以写成HEAD~2。五、分支管理并行开发的利器5.1 为什么需要分支假设你正在开发一个网站突然需要紧急修复一个bug。如果直接在主分支上改可能引入新问题。更好的做法从主分支拉出一个hotfix分支修完测试无误后再合并回去。5.2 分支基本命令# 查看所有分支当前分支前有*号gitbranch# 创建新分支 feature-logingitbranch feature-login# 切换到该分支gitcheckout feature-login# 一步创建并切换gitcheckout-bfeature-login在feature-login分支上开发新功能比如添加login.py文件完成后切回主分支并合并gitcheckout main# 或 mastergitmerge feature-login如果不再需要该分支可以删除gitbranch-dfeature-login5.3 解决合并冲突当两个分支修改了同一文件的同一行代码时Git无法自动合并会产生冲突。例如 HEAD 主分支的代码 feature分支的代码 feature-login你需要手动编辑文件保留想要的内容删除,,标记然后gitadd冲突文件gitcommit-m解决冲突六、远程仓库GitHub/GitLab协作6.1 关联远程仓库以GitHub为例先在网站上新建一个空仓库不要勾选README。然后关联本地仓库gitremoteaddorigin https://github.com/你的用户名/仓库名.git6.2 推送与拉取# 将本地main分支推送到远程origin仓库的main分支gitpush-uorigin main# 之后可以直接用 git pushgitpush# 从远程拉取更新不会自动合并gitfetch# 拉取并合并到当前分支等同于 fetch mergegitpull注意git pull相当于git fetch git merge多人协作时推荐先git fetch查看远程变动再手动合并。6.3 克隆远程仓库要参与别人的项目直接克隆gitclone https://github.com/某个用户/某个项目.gitcd某个项目七、实用技巧与最佳实践7.1 .gitignore 文件有些文件不想被Git跟踪比如日志、临时文件、依赖包创建一个.gitignore文件写入规则# 忽略所有 .log 文件 *.log # 忽略 node_modules 文件夹 node_modules/ # 忽略 .env 环境变量文件 .env7.2 查看历史与差异# 简洁版日志每条一行gitlog--oneline--graph--all# 查看工作区与暂存区的差异gitdiff# 查看暂存区与最新commit的差异gitdiff--staged7.3 撤销操作# 撤销工作区的修改还没addgitcheckout --文件名# 撤销暂存区的修改已经add但没commitgitreset HEAD文件名# 修改最近一次commit的说明gitcommit--amend-m新的提交信息7.4 别名提高效率gitconfig--globalalias.co checkoutgitconfig--globalalias.br branchgitconfig--globalalias.st statusgitconfig--globalalias.lglog --oneline --graph --all之后可以输入git st代替git status。八、团队协作常用工作流一个典型的多人协作流程从远程仓库克隆git clone url基于主分支创建自己的功能分支git checkout -b feature-xxx开发过程中多次add和commit开发完成后先拉取远程最新代码git pull origin main如果有冲突就解决推送到远程自己的分支git push origin feature-xxx在GitHub/GitLab上发起 Pull Request (PR)等待队友审核合并后删除本地分支git branch -d feature-xxx九、常见问题速查表场景命令忘记添加某些文件就commit了git add 漏掉的文件git commit --amend --no-edit不小心提交了敏感信息git reset --soft HEAD^撤销commit但保留修改重新处理想把某个文件恢复到历史版本git checkout commit-id -- 文件合并时不想用自动生成的commit消息git merge --no-ff -m 自定义信息 分支暂存当前未完成的工作git stash恢复git stash pop十、总结Git是一个强大但需要不断练习的工具。本文覆盖了90%日常开发会用到的命令建议你跟着步骤在本地实际操作一遍。一句话记住核心流程git add→git commit→git push遇到更复杂的问题随时查阅git help 命令或官方文档。动手敲起来你很快就能成为团队里的Git小能手