首页 / 知识库 / 0基础入门-阅读资料 / 0基础-git入门

第五章:分支入门

← 上一章:连接远程仓库 | 返回目录 | 下一章:在 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 之间:要合并进来的分支内容

怎么解决?

  1. 打开文件,手动决定保留哪部分(或者两部分都保留)
  2. 删除 <<<<<<<=======>>>>>>> 这些标记
  3. 保存文件
  4. 重新 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 →