第五章:分支入门
← 上一章:连接远程仓库 | 返回目录 | 下一章:在 Cursor / VS Code 中使用 Git →
5.1 什么是分支?
想象你在玩一个游戏,打到一个岔路口:
- 左边是火山关卡
- 右边是冰雪关卡
你想两个都试试,但又不想重新开始。分支就像”存档”功能——你可以在岔路口存个档,然后先走左边,不满意就回到存档点走右边。
在 Git 中:
- 主分支(main) 就是你的游戏主线
- 其他分支 就是平行宇宙——你可以在新分支上随便尝试,不会影响主线
- 如果实验成功了,就把改动”合并”回主线
- 如果实验失败了,直接删掉分支,主线不受任何影响
真实开发中的场景:
main 分支 ─────────●───────●─────────●──────────── (稳定的代码)
\ /
feature/登录功能 ────●────●────●───── (开发完成,合并回 main)
5.2 分支基本操作
查看当前分支
git branch
输出(* 标记当前所在的分支):
* main
创建新分支
git branch feature/hello
这会创建一个名为 feature/hello 的新分支,但你还在 main 上。
切换分支
git checkout feature/hello
或者用更新的命令:
git switch feature/hello
创建并立即切换(最常用)
git checkout -b feature/hello
这一条命令 = 创建 + 切换,实际开发中用得最多。
5.3 在分支上工作并合并
完整流程演示:
# 1. 确保你在 main 分支上
git checkout main
# 2. 创建并切换到新分支
git checkout -b feature/greeting
# 3. 在新分支上开发(创建一个新文件)
echo "def greet(): print('你好!')" > greeting.py
# 4. 提交改动
git add .
git commit -m "添加greeting功能"
# 5. 切回主分支
git checkout main
# 6. 你会发现 greeting.py 不见了!别担心,它在 feature/greeting 分支上
# 7. 把新分支的改动合并到主分支
git merge feature/greeting
# 8. 现在 greeting.py 出现在 main 分支上了!
# 9. 删除已合并的分支(可选,保持整洁)
git branch -d feature/greeting
5.4 处理合并冲突
什么时候会出现冲突?
当两个分支修改了同一个文件的同一行时,Git 不知道该保留哪个版本,就会产生”冲突”。
冲突长什么样?
打开有冲突的文件,你会看到类似这样的标记:
<<<<<<< HEAD
这是 main 分支的内容
=======
这是 feature 分支的内容
>>>>>>> feature/xxx
含义:
<<<<<<< HEAD到=======之间:当前分支(main)的内容=======到>>>>>>> feature/xxx之间:要合并进来的分支内容
怎么解决?
- 打开文件,手动决定保留哪部分(或者两部分都保留)
- 删除
<<<<<<<、=======、>>>>>>>这些标记 - 保存文件
- 重新 add 和 commit
# 解决冲突后
git add .
git commit -m "解决合并冲突"
在 Cursor/VS Code 中解决冲突更方便——编辑器会高亮冲突区域,提供”接受当前” / “接受传入” / “接受两者”的按钮,点一下就行。
5.5 动手练习
# 1. 进入项目
cd git-practice
# 2. 创建并切换到新分支
git checkout -b feature/test
# 3. 创建新文件
echo "这是测试分支的内容" > test.txt
git add .
git commit -m "在test分支添加test.txt"
# 4. 切回main
git checkout main
# 5. 合并
git merge feature/test
# 6. 查看结果
git log --oneline
# 7. 删除分支
git branch -d feature/test
# === 进阶:故意制造冲突 ===
# 8. 在main分支修改README
echo "main分支的修改" >> README.md
git add .
git commit -m "main分支修改README"
# 9. 创建新分支并修改同一个文件
git checkout -b feature/conflict
echo "conflict分支的修改" >> README.md
git add .
git commit -m "conflict分支修改README"
# 10. 切回main并合并(会产生冲突)
git checkout main
git merge feature/conflict
# 11. 打开 README.md 手动解决冲突,然后:
git add .
git commit -m "解决README合并冲突"
← 上一章:连接远程仓库 | 返回目录 | 下一章:在 Cursor / VS Code 中使用 Git →