Git 分支管理与团队协作
摘要
本文通过时序图和分支树展示了Git分支协作与冲突解决的完整流程。首先演示了两个开发者基于同一远程仓库并行工作的场景:开发者A创建功能分支并提交,开发者B修复bug并推送。随后展示了无冲突合并与冲突合并两种情况,重点说明了冲突产生的原因(同一文件的同一行被不同分支修改)及解决步骤(手动编辑冲突文件→标记已解决→提交合并结果)。文章还通过实例操作详细演示了初始化仓库、创建分支、修改文件、合并冲突等Git命令的具体使用过程,帮助读者理解Git分支管理的核心概念和操作流程
一、分支模型与协作流程图
以下时序图展示了两个开发者基于同一远程仓库并行工作,以及分支合并与冲突解决的完整流程。
二、分支树:先理解提交历史的结构
Git 的提交历史构成一棵树。每次 commit 产生一个节点,分支是指向某个节点的指针。
为什么需要分支?
- 并行开发:多个功能同时进行,互不干扰。
- 隔离风险:实验性改动放在单独分支,失败直接删除。
- 版本维护:为不同版本(v1.0、v2.0)创建长期分支。
三、实例操作
以下操作均在一个新目录中进行,使用命令行。
3.1 初始化并创建第一个文件
mkdir git-branch-demo
cd git-branch-demo
git init

创建 hello.txt,内容:
Line 1: Hello Git

git add hello.txt
git commit -m "第一次提交:添加 hello.txt"

完整过程:
3.2 创建并切换到新分支
git checkout -b feature-login
验证:
git branch -v

3.3 在新分支上修改并提交
编辑 hello.txt,增加一行:
Line 1: Hello Git
Line 2: Added by feature-login
git add hello.txt
git commit -m "feature-login: 增加第二行"

此时分支树分叉。
3.4 切换回主分支并修改同一文件
git checkout main
此时 hello.txt 是初始版本。编辑它:
Line 1: Hello Git
Line 2: Added by main


git add hello.txt
git commit -m "master: 增加第二行(不同内容)"

现在两个分支在**同一文件的同一位置(第二行)**分别做了不同修改 → 后续合并必然冲突。
四、合并冲突:产生原因与解决方法
4.1 为什么会产生冲突?
Git 合并时,会找到两个分支的最近公共祖先(merge base),然后执行三方合并:
- 如果 Base → master 与 Base → feature 的修改不重叠(修改了不同文件,或同一文件的不同行),Git 能自动合并。
- 如果重叠(修改了同一文件的同一行或相邻行),Git 无法判断保留哪个版本,于是产生冲突,需要人工介入。
本例中,两个分支都是在第二行增加内容,但内容不同,因此 Git 报冲突。
4.2 执行合并(产生冲突)
在 main 分支上:
git merge feature-login
输出:
Auto-merging hello.txt
CONFLICT (content): Merge conflict in hello.txt
Automatic merge failed; fix conflicts and then commit the result.
此时状态为 (master|MERGING)。

此时的分支树:
4.3 解决冲突(三步骤)
打开 hello.txt,内容变为:
Line 1: Hello Git
<<<<<<< HEAD
Line 2: Added by master
=======
Line 2: Added by feature-login
>>>>>>> feature-login

步骤1:手动编辑,删除 <<<<<<<、=======、>>>>>>> 标记,保留需要的内容。例如合并两句:
Line 1: Hello Git
Line 2: Added by master and feature-login

步骤2:标记为已解决:
git add hello.txt
步骤3:完成合并提交:
git commit -m "合并 feature-login,解决第二行冲突"
注意:此处的 git commit 不能带文件名,因为合并提交可能涉及多个文件。
五、正常合并(无冲突)
如果两个分支修改了不同文件,或者同一文件的不同行,合并将自动完成,无需人工干预。
示例场景:
feature 分支修改了 a.txt 的内容。
master 分支修改了 b.txt 的内容。
执行 git merge feature 后,Git 直接成功,并自动生成一个合并提交(非 fast-forward 时)。
git merge feature

六、远程分支协作常用命令
| 操作 | 命令 |
|---|---|
| 推送本地分支到远程 | git push origin <branch> |
| 拉取远程分支更新 | git pull origin <branch> |
| 查看所有远程分支 | git branch -r |
| 删除远程分支 | git push origin --delete <branch> |
| 克隆远程仓库 | git clone <url> |
邀请成员协作:在 Gitee 仓库中添加协作者,对方克隆后即可推送。
七、小结
| 概念 | 说明 |
|---|---|
| 分支树 | 提交历史形成的图结构,分支是指针 |
| 三方合并 | 基于公共祖先比较两个分支的差异 |
| 冲突原因 | 两个分支修改了同一文件的同一区域 |
| 解决冲突 | 手动编辑 → git add → git commit(无文件名) |
| 正常合并 | 修改不重叠时自动完成 |
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)