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

五、练习2:Git分支操作

练习2:Git分支操作

练习目标

掌握Git分支的创建、切换、合并等操作,理解分支在开发中的作用。

练习步骤

步骤1:准备基础仓库

# 创建练习目录
mkdir branch-practice
cd branch-practice# 初始化仓库
git init# 创建初始文件
echo "# 分支练习项目" > README.md
git add README.md
git commit -m "初始化项目"

步骤2:创建和切换分支

# 查看当前分支
git branch# 创建新分支
git branch feature-login# 切换到新分支
git checkout feature-login# 或者使用新命令创建并切换
git checkout -b feature-register

步骤3:在不同分支上开发

# 在feature-login分支上工作
git checkout feature-login# 创建登录功能文件
echo "function login() { console.log('登录功能'); }" > login.js
git add login.js
git commit -m "添加登录功能"# 切换到feature-register分支
git checkout feature-register# 创建注册功能文件
echo "function register() { console.log('注册功能'); }" > register.js
git add register.js
git commit -m "添加注册功能"

步骤4:查看分支历史

# 查看所有分支
git branch -a# 查看分支图
git log --graph --oneline --all# 查看特定分支的历史
git log --oneline feature-login
git log --oneline feature-register

步骤5:合并分支

# 切换到主分支
git checkout main# 合并登录功能分支
git merge feature-login# 查看合并后的状态
git status
git log --oneline# 合并注册功能分支
git merge feature-register

步骤6:解决合并冲突(模拟)

# 在两个分支上修改同一个文件
git checkout feature-login
echo "// 登录模块" > app.js
git add app.js
git commit -m "添加登录模块"git checkout feature-register
echo "// 注册模块" > app.js
git add app.js
git commit -m "添加注册模块"# 尝试合并(会产生冲突)
git checkout main
git merge feature-login
git merge feature-register  # 这里会有冲突

步骤7:解决冲突

# 查看冲突文件
cat app.js# 手动编辑app.js文件,解决冲突
# 删除冲突标记,保留需要的内容
echo "// 登录模块
// 注册模块" > app.js# 添加解决后的文件
git add app.js
git commit -m "解决合并冲突"

步骤8:删除分支

# 删除已合并的分支
git branch -d feature-login
git branch -d feature-register# 查看剩余分支
git branch

练习检查点

完成练习后,请检查以下几点:

  • 能够创建新分支
  • 能够在分支间切换
  • 能够在不同分支上独立开发
  • 能够合并分支
  • 能够解决合并冲突
  • 能够删除已合并的分支
  • 理解分支的作用和优势

扩展练习

1. 分支命名规范练习

# 创建不同类型的分支
git checkout -b feature/user-profile
git checkout -b bugfix/login-error
git checkout -b hotfix/security-patch
git checkout -b release/v1.0.0

2. 分支保护练习

# 模拟保护分支(在实际项目中通过平台设置)
git checkout main
echo "重要文件,不要直接修改" > important.txt
git add important.txt
git commit -m "添加重要文件"# 尝试在main分支上直接修改
echo "直接修改" >> important.txt
git add important.txt
git commit -m "直接修改重要文件"

3. 远程分支操作

# 推送分支到远程(如果有远程仓库)
git push origin feature-login
git push origin feature-register# 查看远程分支
git branch -r# 拉取远程分支
git fetch origin
git checkout -b feature-remote origin/feature-remote

分支管理最佳实践

1. 分支命名规范

  • feature/xxx:新功能分支
  • bugfix/xxx:bug修复分支
  • hotfix/xxx:紧急修复分支
  • release/xxx:发布分支

2. 工作流程

  1. 从主分支创建功能分支
  2. 在功能分支上开发
  3. 完成开发后合并回主分支
  4. 删除功能分支

3. 合并策略

  • Fast-forward:适合简单的线性历史
  • Merge commit:保留分支历史
  • Squash merge:将多个提交合并为一个

常见问题

Q: 什么时候应该创建新分支?
A: 当开始开发新功能、修复bug或准备发布时,都应该创建新分支。

Q: 如何选择合并策略?
A: 根据项目需求选择,简单项目用fast-forward,复杂项目用merge commit。

Q: 合并冲突如何避免?
A: 经常同步主分支的更新,及时解决冲突,避免长期分支。

Q: 什么时候删除分支?
A: 分支合并到主分支后,确认不再需要时就可以删除。

http://www.dtcms.com/a/361256.html

相关文章:

  • 四、操作系统
  • 腾讯混元翻译大模型Hunyuan-MT-7B:重塑跨语言沟通的技术革命
  • 2025年应届生求职加分指南:这些新兴技能路径让你脱颖而出
  • 电子电气架构 --- 智能电动车EEA电子电气架构(下)
  • 【LeetCode 热题 100】5. 最长回文子串——中心扩散法
  • Linux按键输入实验
  • (纯新手教学)计算机视觉(opencv)实战十一——轮廓近似(cv2.approxPolyDP)
  • Python OpenCV图像处理与深度学习:Python OpenCV特征检测入门
  • “人工智能+”时代的端侧AI:算力下沉与实时视频的新基座
  • crypto-whatkey(2025YC行业赛)
  • 【OpenFeign】基础使用
  • 移动端签名组件横屏实现
  • LeetCode199. 二叉树的右视图 - 解题思路与实现
  • [系统架构设计师]案例(二十四)
  • 纯代码实现登录页面的DIY
  • 蓝牙BLE modem调制里面phase manipulation什么意思
  • 【麒麟Linux】KylinV10网络配置
  • 深度学习】--卷积神经网络
  • 深度学习篇---ShuffleNet
  • 基于单片机十六路抢答器系统Proteus仿真(含全部资料)
  • 国产化PDF处理控件Spire.PDF教程:在 Java 中将 PDF 转换为 CSV(轻松提取 PDF 表格)
  • 存储掉电强制拉库引起ORA-01555和ORA-01189/ORA-01190故障处理---惜分飞
  • 数据库常见故障类型
  • Proteus 仿真 + STM32CubeMX 协同开发全教程:从配置到仿真一步到位
  • 希尔排序。
  • 关于命名参数占位符的分析(主要以PHP为例)
  • 详细介绍 JMeter 性能测试
  • Java泛型通配符详解:搞懂?/extends/super用法,避开集合操作踩坑点
  • 快递地址归类排序实现(Java Python)
  • Jenkins 自动构建Vue 项目的一个大坑