分支工作流模拟
你将构建什么
在主分支上创建功能分支开发新功能,修改文件后合并回主分支。模拟团队协作中常见的分支工作流,理解分支如何隔离不同功能的开发。
学习目标
- 用 git branch 创建分支、git checkout 切换分支
- 在不同分支上独立修改文件
- 用 git merge 把功能分支合并回主分支
- 理解分支隔离和合并的意义
前置要求
- 掌握 git init、add、commit 基本工作流
- 已完成前两个 Git 项目或具备同等基础
步骤
- 1
初始化仓库并创建主分支提交
创建新目录 branch-practice,git init 初始化。创建 main.txt 写入“主分支内容”,提交。默认分支可能是 master 或 main。
代码mkdir branch-practice cd branch-practice git init echo "主分支内容" > main.txt git add main.txt git commit -m "主分支初始提交"预期结果
仓库创建完成,主分支有一条提交。
提示
git branch -M main 可以把默认分支重命名为 main(如果当前是 master)。
- 2
创建并切换到功能分支
用 git branch feature-login 创建功能分支,git checkout feature-login 切换过去。也可以用 git checkout -b feature-login 一步完成创建并切换。
代码git checkout -b feature-login # 等价于: # git branch feature-login # git checkout feature-login预期结果
切换到 feature-login 分支,命令行提示符可能显示当前分支名。
提示
git switch 是更新的命令,和 checkout 功能类似但语义更明确。
- 3
在功能分支上开发
在 feature-login 分支上创建 login.txt 写入“登录功能”,提交。这个修改只存在于功能分支,主分支不受影响。
代码echo "登录功能" > login.txt git add login.txt git commit -m "添加登录功能"预期结果
feature-login 分支多了一条提交,主分支不变。
提示
用 git branch 查看所有分支,* 标记当前所在分支。
- 4
切换回主分支并合并
git checkout main 切回主分支,确认 login.txt 不存在(它在功能分支上)。用 git merge feature-login 把功能分支合并进来。
代码git checkout main ls # 确认没有 login.txt git merge feature-login ls # 合并后 login.txt 出现预期结果
合并后主分支有了 login.txt,git log 能看到功能分支的提交。
提示
合并后功能分支可以保留或删除:git branch -d feature-login。
- 5
模拟合并冲突并解决
创建新分支 feature-styling,在两个分支上同时修改 main.txt 的同一行,合并时会产生冲突。手动编辑文件解决冲突后提交。
代码git checkout -b feature-styling echo "样式分支修改" > main.txt git commit -am "样式分支修改 main.txt" git checkout main echo "主分支修改" > main.txt git commit -am "主分支修改 main.txt" git merge feature-styling # 冲突!手动编辑 main.txt 选择保留内容 git add main.txt git commit -m "解决合并冲突"预期结果
合并时提示冲突,解决后提交完成合并。
提示
冲突文件中 <<<<<<< ======= >>>>>>> 标记三个区域,选择保留一边或合并两者后删除标记。
自己动手试试
# TODO: 初始化仓库、创建分支、提交、合并回主分支、解决冲突
mkdir branch-practice
cd branch-practice
git initmkdir branch-practice
cd branch-practice
git init
echo "主分支内容" > main.txt
git add main.txt
git commit -m "主分支初始提交"
git checkout -b feature-login
echo "登录功能" > login.txt
git add login.txt
git commit -m "添加登录功能"
git checkout main
git merge feature-login
git branch -d feature-login
git checkout -b feature-styling
echo "样式分支修改" > main.txt
git commit -am "样式分支修改 main.txt"
git checkout main
echo "主分支修改" > main.txt
git commit -am "主分支修改 main.txt"
git merge feature-styling
# 冲突!手动编辑 main.txt 选择保留内容
git add main.txt
git commit -m "解决合并冲突"
git log --oneline你学到了什么
你掌握了分支工作流——这是 Git 最强大的功能。分支让你可以并行开发多个功能而不互相干扰,合并时如果改了同一行就需要手动解决冲突。团队协作中,功能分支是标准实践。
相关资源
相关术语
新手友好的术语表用大白话解释编程术语——变量、函数、DOM、Promise 等等。
相关错误
用大白话解释常见错误——什么意思、为什么发生、如何修复。