当前位置: 首页 > news >正文

Git 完整学习笔记:从入门到团队协作

文章目录

  • Git 完整学习笔记:从入门到团队协作(版本控制 + 命令 + 分支 + 冲突 + 远程仓库)
    • 一、版本控制分类
      • 1. 集中式版本控制
      • 2. 分布式版本控制
    • 二、Git 三大工作区域
      • 1. 工作区(workspace)
      • 2. 缓存区(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 集成 Git

Git 完整学习笔记:从入门到团队协作(版本控制 + 命令 + 分支 + 冲突 + 远程仓库)

一、版本控制分类

1. 集中式版本控制

代表工具:SVN、CVS

特点:版本数据统一存放在中央服务器,本地无完整版本备份,联网依赖强,中央服务器故障会影响所有开发者。

2. 分布式版本控制

代表工具:Git

特点:每个本地仓库都是完整版本备份,无需全程联网,安全性高、速度快、分支管理灵活。Git 是目前业界最主流的版本控制工具,承载着全球数千万开发者的项目托管,几乎所有现代 DevOps 流程都建立在 Git 之上。

二、Git 三大工作区域

Git 核心工作分区,所有操作围绕三大区域流转:工作区 → 暂存区 → 本地仓库(本文将“缓存区”统一规范为更通用的“暂存区”说法,两者等价)。

1. 工作区(workspace)

本地项目真实文件夹,日常编写、修改代码的目录,包含三种文件状态:

  • 未跟踪:新创建的文件,未被Git管理

  • 未暂存:已被Git管理的文件,发生修改但未提交缓存区

2. 缓存区(index / 暂存区)

临时存放代码变更的区域,用于汇总修改,统一提交到本地仓库。

核心操作:git add .将工作区所有变更提交到缓存区

3. 本地仓库(repository)

Git 本地版本仓库,永久保存每一次提交的代码版本,可回溯、可查看日志。

核心操作:git commit -m "注释"将缓存区内容永久提交到本地仓库

⚠️ 注意事项

  • 慎用git add .:该命令会暂存所有修改,可能将敏感文件(如密钥、配置文件)意外纳入版本控制。务必配合.gitignore文件忽略不需要跟踪的文件。
  • 提交前检查:养成执行git status查看暂存区内容的习惯,确认只有目标文件被暂存再提交,避免将日志、临时文件等一并提交。
  • 暂存区内容及时清理:如果暂存了错误文件,可通过git reset HEAD <file>从暂存区移除,但文件修改仍保留在工作区。

三、基础常用命令

1. 系统基础命令

  • touch 文件名:创建新文件

  • clear:清空终端命令行界面

  • ll:查看当前目录所有文件及详情

2. VIM 编辑器基础操作

  • i:进入编辑模式,可修改文件内容

  • esc:退出编辑模式,进入命令模式

  • :wq:保存修改并退出 VIM

3. 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.lg"log --all --pretty=oneline --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-loginbugfix/issue-123),方便团队协作时快速识别分支用途。

五、Git 代码冲突

1. 冲突产生原因

多分支修改同一文件同一行代码,合并分支时Git无法自动判断保留内容,触发冲突。

冲突示例
  1. master分支修改 test02 文件,提交更新(内容=2)

  2. Demo分支修改同一 test02 文件同一行,提交更新(内容=3)

  3. 在master分支执行git merge Demo,触发代码冲突

2. 冲突解决方法

  1. 打开冲突文件,删除Git自动生成的冲突标记(<<<、=====、>>>)

  2. 手动保留需要的代码(保留master代码 / 保留分支代码 / 合并两处代码)

  3. 修改完成后,执行git add .暂存

  4. 执行git commit -m "解决分支合并冲突"提交到仓库,冲突解决

⚠️ 注意事项

  • 解决冲突后务必测试:手动合并代码后,不要立刻提交,应先运行相关测试或启动项目验证,确保合并后的代码功能正常,避免引入新问题。
  • 与团队沟通:如果冲突涉及多个开发者的修改,尽量和相关人员确认保留哪部分代码,防止误删他人关键逻辑。
  • 善用合并工具:除了手动编辑,也可以借助 VS Code、IDEA 等 IDE 内置的冲突解决工具,通过图形化对比更直观地选择保留版本。
  • 避免大范围冲突:日常开发中建议频繁将功能分支与主分支同步(mergerebase),减少长时间未同步导致的巨型冲突。

六、远程仓库配置与操作

1. 常用远程仓库平台

  • GitHub:国外平台,访问速度慢

  • Gitee(码云):国内平台,速度快、稳定,推荐使用(需手机号注册)

  • GitLab:企业级私有仓库平台

2. SSH公钥配置(免密连接远程仓库)

配置后后续拉取、推送代码无需重复输入账号密码

  1. 生成公钥:ssh-keygen -t rsa(全程回车默认配置)

  2. 查看公钥:cat ~/.ssh/id_rsa.pub

  3. 复制全部公钥内容,粘贴到Gitee/GitHub个人SSH公钥配置中

  4. 验证配置:ssh -T git@gitee.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 集成 Git

IDEA、VS Code 均内置Git工具,无需频繁操作命令行:

  • 支持可视化克隆远程仓库、切换分支、提交、推送、拉取代码

  • 图形化展示代码冲突,可视化解决冲突,操作更便捷

http://www.jsqmd.com/news/1292290/

相关文章:

  • Ubuntu 部署 Docker 完整教程
  • Android插件化开发实战:Shadow框架SDK接入与核心原理详解
  • 抚琴成一快-4m6/6b和弦
  • STM32串口通信实战:从HAL库配置到DMA+空闲中断应用
  • PN532 NFC模块串口通信全解析:从硬件连接到MIFARE卡读写实战
  • PCB标签定制公司发展现状、痛点与前景深度分析
  • 全面掌握大气层系统:Nintendo Switch进阶用户的实用配置指南
  • gif压缩工具:邮箱附件超限被退时按人群怎么压 - 办公小帮手
  • 5 款主流电商 AI 作图工具深度测评!批量出图、商品保真哪家更强?
  • 2026 上海物流数字化服务商 TOP10 实力榜:拆解 5 个百万级踩坑点,企业选型直接抄作业
  • Abaqus热应力分析中对流换热建模与优化实践
  • 得物推荐评测平台:缩短评测周期至小时级,节省 91% 资源成本!
  • Transformer架构解析:从自注意力机制到工程实践
  • 老年人数字健康平台选型:合规落地与全流程审查指南
  • B 端工厂抖音运营服务商选型全解析(2026年7月工业营销获客指南)
  • 高强度塑钢打包带的优势是什么
  • 数字电路基础:电平、上拉/下拉、开漏与时序逻辑详解
  • Linux搭建Java项目部署环境
  • 二维电子气:从基础原理到HEMT器件应用
  • STM32 FMC驱动NAND FLASH:从原理到实战的完整指南
  • 终极指南:Windows平台微信QQ防撤回补丁,让你的聊天记录不再消失
  • AI自媒体矩阵搭建实战手册:3天快速部署5平台协同系统,附自动化SOP模板(限免领取)
  • Python+Vue构建汽车推荐系统:技术选型与实战经验
  • UE5蓝图与WebSocket构建实时数字人交互系统:架构、实现与优化
  • IIS6.0解析漏洞与PUT上传攻击:原理、复现与纵深防御实践
  • Java程序员转正述职报告:从技术实现到价值呈现的实战指南
  • 超全汇总:AI Agent 管理平台有哪些?这一篇说全了
  • 破局B2B短视频获客:2026年抖音运营公司综合实力评估与选择指南
  • STM32 GPIO深度解析:从八种工作模式到实战避坑指南
  • 图片压缩工具免费jpg在线:论文投稿被卡时手机电脑对照着选 - 办公小帮手