
文章目录Git 完整学习笔记从入门到团队协作版本控制 命令 分支 冲突 远程仓库一、版本控制分类1. 集中式版本控制2. 分布式版本控制二、Git 三大工作区域1. 工作区workspace2. 缓存区index / 暂存区3. 本地仓库repository⚠️ 注意事项三、基础常用命令1. 系统基础命令2. VIM 编辑器基础操作3. Git 全局配置命令4. 代码提交与状态查看5. 版本回退命令6. 命令别名配置简化日志查看⚠️ 注意事项四、Git 分支管理1. 核心概念2. 分支常用命令⚠️ 注意事项五、Git 代码冲突1. 冲突产生原因冲突示例2. 冲突解决方法⚠️ 注意事项六、远程仓库配置与操作1. 常用远程仓库平台2. SSH公钥配置免密连接远程仓库3. 远程仓库关联与推送4. 远程仓库拉取与克隆七、远程代码冲突1. 冲突产生场景2. 解决方式⚠️ 注意事项八、IDE 集成 GitGit 完整学习笔记从入门到团队协作版本控制 命令 分支 冲突 远程仓库一、版本控制分类1. 集中式版本控制代表工具SVN、CVS特点版本数据统一存放在中央服务器本地无完整版本备份联网依赖强中央服务器故障会影响所有开发者。2. 分布式版本控制代表工具Git特点每个本地仓库都是完整版本备份无需全程联网安全性高、速度快、分支管理灵活。Git 是目前业界最主流的版本控制工具承载着全球数千万开发者的项目托管几乎所有现代 DevOps 流程都建立在 Git 之上。二、Git 三大工作区域Git 核心工作分区所有操作围绕三大区域流转工作区 → 暂存区 → 本地仓库本文将“缓存区”统一规范为更通用的“暂存区”说法两者等价。1. 工作区workspace本地项目真实文件夹日常编写、修改代码的目录包含三种文件状态未跟踪新创建的文件未被Git管理未暂存已被Git管理的文件发生修改但未提交缓存区2. 缓存区index / 暂存区临时存放代码变更的区域用于汇总修改统一提交到本地仓库。核心操作git add .将工作区所有变更提交到缓存区3. 本地仓库repositoryGit 本地版本仓库永久保存每一次提交的代码版本可回溯、可查看日志。核心操作git commit -m 注释将缓存区内容永久提交到本地仓库⚠️ 注意事项慎用git add .该命令会暂存所有修改可能将敏感文件如密钥、配置文件意外纳入版本控制。务必配合.gitignore文件忽略不需要跟踪的文件。提交前检查养成执行git status查看暂存区内容的习惯确认只有目标文件被暂存再提交避免将日志、临时文件等一并提交。暂存区内容及时清理如果暂存了错误文件可通过git reset HEAD file从暂存区移除但文件修改仍保留在工作区。三、基础常用命令1. 系统基础命令touch 文件名创建新文件clear清空终端命令行界面ll查看当前目录所有文件及详情2. VIM 编辑器基础操作i进入编辑模式可修改文件内容esc退出编辑模式进入命令模式:wq保存修改并退出 VIM3. Git 全局配置命令git config --global user.name 用户名配置全局用户名无字符串则查看当前用户名git config --global user.email 邮箱配置全局邮箱无字符串则查看当前邮箱git config --global --list查看所有全局配置信息4. 代码提交与状态查看git init初始化本地Git仓库将普通文件夹变为Git托管项目git add .将工作区所有新增、修改文件添加到缓存区git commit -m 提交注释将缓存区内容提交到本地仓库必须填写注释说明变更git status查看当前仓库文件状态未跟踪、未暂存、已暂存git log查看详细提交日志版本记录、作者、时间、注释git reflog查看所有操作记录包含回退、删除的提交记录可找回丢失版本5. 版本回退命令git reset --hard commitid强回退回退到指定版本工作区、缓存区、日志全部重置本地修改会丢失git reset --soft commitid软回退仅回退仓库版本工作区代码保留仅日志和暂存状态变更6. 命令别名配置简化日志查看配置极简图形化日志查看别名执行后可直接用git lg查看简洁日志gitconfig--globalalias.lglog --all --prettyoneline --abbrev-commit --graph⚠️ 注意事项提交注释规范注释应清晰描述本次变更内容和原因推荐遵循 约定式提交 格式如feat: 添加用户登录、fix: 修复空指针异常便于生成变更日志和回溯历史。保持提交原子性每次提交应只包含一个逻辑变更避免将多个不相关的修改混在一起提交这样回滚或查看历史时更清晰。谨慎使用git reset --hard强回退会直接丢弃工作区和暂存区所有未提交的修改不可恢复。建议先使用git stash暂存当前工作再执行回退或者创建新分支保存当前状态后再操作。VIM 编辑器退出若使用git commit不加-m参数会进入 VIM 编辑器等待编辑提交信息。此时按i进入编辑输入信息后按Esc再输入:wq保存退出若想放弃提交输入:q!退出即可。四、Git 分支管理1. 核心概念HEAD指针始终指向当前正在使用的分支同一时间仅指向一个分支。分支规范master主分支→ develop开发分支→ feature功能分支bug修复从主分支拉取分支修复完成合并回主分支。2. 分支常用命令git branch查看当前所有本地分支标注当前所在分支git branch 分支名新建分支不切换git checkout 分支名切换到指定分支git checkout -b 分支名新建分支并直接切换到该分支常用git merge 分支名在当前分支合并指定分支代码常规在master合并功能分支git branch -d 分支名安全删除分支会校验分支是否已合并未合并则禁止删除git branch -D 分支名强制删除分支不做任何校验无论是否合并均可删除⚠️ 注意事项合并前确保工作区干净执行git merge前务必提交或暂存当前分支的所有修改否则合并可能失败或产生意外混乱。删除分支需谨慎使用git branch -d删除前应确认分支代码已合并到主分支避免丢失未合并的提交。若需强制删除务必核实无重要代码。切换分支时暂存变更使用git checkout切换分支前若有未提交修改Git 可能会阻止切换或导致修改丢失。建议先git stash保存当前进度切换后再git stash pop恢复。命名规范建议使用有意义的短横线命名如feature/user-login、bugfix/issue-123方便团队协作时快速识别分支用途。五、Git 代码冲突1. 冲突产生原因多分支修改同一文件同一行代码合并分支时Git无法自动判断保留内容触发冲突。冲突示例master分支修改 test02 文件提交更新内容2Demo分支修改同一 test02 文件同一行提交更新内容3在master分支执行git merge Demo触发代码冲突2. 冲突解决方法打开冲突文件删除Git自动生成的冲突标记、、手动保留需要的代码保留master代码 / 保留分支代码 / 合并两处代码修改完成后执行git add .暂存执行git commit -m 解决分支合并冲突提交到仓库冲突解决⚠️ 注意事项解决冲突后务必测试手动合并代码后不要立刻提交应先运行相关测试或启动项目验证确保合并后的代码功能正常避免引入新问题。与团队沟通如果冲突涉及多个开发者的修改尽量和相关人员确认保留哪部分代码防止误删他人关键逻辑。善用合并工具除了手动编辑也可以借助 VS Code、IDEA 等 IDE 内置的冲突解决工具通过图形化对比更直观地选择保留版本。避免大范围冲突日常开发中建议频繁将功能分支与主分支同步merge或rebase减少长时间未同步导致的巨型冲突。六、远程仓库配置与操作1. 常用远程仓库平台GitHub国外平台访问速度慢Gitee码云国内平台速度快、稳定推荐使用需手机号注册GitLab企业级私有仓库平台2. SSH公钥配置免密连接远程仓库配置后后续拉取、推送代码无需重复输入账号密码生成公钥ssh-keygen -t rsa全程回车默认配置查看公钥cat ~/.ssh/id_rsa.pub复制全部公钥内容粘贴到Gitee/GitHub个人SSH公钥配置中验证配置ssh -T gitgitee.com提示成功即配置完成3. 远程仓库关联与推送git remote add origin 远程仓库SSH地址本地仓库关联远程仓库origin为远程仓库默认别名git remote查看已关联的远程仓库git branch -vv查看本地分支与远程分支的绑定关联关系git push origin master将本地master分支代码推送到远程仓库git push --set-upstream origin master:master绑定本地与远程master分支绑定后可直接使用git push推送git push -f强制覆盖远程仓库代码谨慎使用易丢失远程代码4. 远程仓库拉取与克隆git clone 远程仓库SSH地址克隆远程仓库到本地首次拉取项目使用仅一次git fetch抓取远程仓库最新代码不自动合并本地分支git pull拉取远程代码并自动合并本地分支等价于 fetch merge七、远程代码冲突1. 冲突产生场景远程仓库文件、本地仓库文件修改了同一行代码执行git pull拉取远程代码时触发合并冲突。2. 解决方式与本地分支冲突解决方式一致手动修改冲突文件 → 整理代码 →git add .暂存 →git commit提交完成冲突修复。⚠️ 注意事项拉取前先提交或暂存本地修改执行git pull前确保本地工作区干净已提交或 stash否则可能因冲突导致合并失败。避免强制推送git push -f会覆盖远程历史切勿在共享分支如 master/main上使用。如果确实需要改写历史应使用git push --force-with-lease并提前告知团队成员。频繁同步在开始新工作前先执行git pull定期与远程保持同步能够大幅度减少远程冲突的发生概率。处理冲突后重新推送解决冲突并提交后执行git pull确认无新冲突再执行git push将修复推送到远程。八、IDE 集成 GitIDEA、VS Code 均内置Git工具无需频繁操作命令行支持可视化克隆远程仓库、切换分支、提交、推送、拉取代码图形化展示代码冲突可视化解决冲突操作更便捷