数码之家

 找回密码
 立即注册
搜索
查看: 392|回复: 12

[软件] 有对git了解的吗,git的分支到底是什么作用?

[复制链接]
发表于 2025-3-3 16:12:20 | 显示全部楼层 |阅读模式
Branch 是一个分支,指向 Git 仓库中某个提交(commit)。每个分支都相互独立,可以修改代码和提交新的提交,并在需要时合并两个分支。分支可以在 Git 中用于协作开发,并且可以允许多个用户同时修改同一个项目而不会影响其他用户的工作。
那么它是如何实现多个用户同时改一份代码而不互相冲突的呢?假如一个代码从某一个时刻分了好几个分支出去,每个分支上的人各改各的,A分支改完了提交上去了,这个时候B再提交不会把A的修改覆盖掉吗?百思不得其解这个git的分支是个什么原理,有懂的坛友可以解释一下吗?





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 楼主| 发表于 2025-3-3 16:21:33 | 显示全部楼层
我的理解是,分支就相当于把当前的代码另外拷了一份,这样的话修改才不影响原来的代码,但是每个分支都自己单独拷了一份代码出去的话,再更新回主分支就会有问题,因为都是各改各的,每个人都不知道别人修改的内容,就会覆盖掉别人的改动
回复 支持 反对

使用道具 举报

发表于 2025-3-3 16:27:37 | 显示全部楼层
我们公司是不准在主分支修改代码的,主分支只用来发布打tags,所有的修改都在develop分支上。一个分支到后面会回退出问题
回复 支持 反对

使用道具 举报

发表于 2025-3-3 16:30:06 | 显示全部楼层
git是分布式版本控制,所有用户手里都有一份完整的代码,所以大家本地随便修改,互不影响,代码最终都要合并到服务器,合并早的,直接提交到服务器,合并的晚的手动或自动解决代码冲突,代码合并操作失误时会覆盖别人的代码

分支就是分别维护,一个只能打电话发短信的手机作为主分支,张三可以在此基础上新建一个a分支,增加播放音乐的功能.李四可以新增一个b分支,增加收音机功能,王五新建一个c分支,增加gprs功能,然后大家发现王五这个功能大家都实用,王五就可以把gprs代码合并到主分支,其他人再从主分支把gprs功能拉到自己的分支
回复 支持 反对

使用道具 举报

发表于 2025-3-3 16:33:29 | 显示全部楼层
提交上去的时候需要审核的,向上提交时与主版本相同的应该默认忽略,不同(修改、增加)则提示,你看文件修改都有记录的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2025-3-3 16:33:39 | 显示全部楼层
chenlei1910 发表于 2025-3-3 16:27
我们公司是不准在主分支修改代码的,主分支只用来发布打tags,所有的修改都在develop分支上。一个分支到后 ...

理论上是的,一般人也不给推送主分支的权限,可以保证项目运行稳定,遇到问题需要回退版本时各个版本都能稳定运行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-3-3 16:40:01 | 显示全部楼层
飞向狙沙 发表于 2025-3-3 16:30
git是分布式版本控制,所有用户手里都有一份完整的代码,所以大家本地随便修改,互不影响,代码最终都要合并到 ...

所以分支不合并回主分支就没事,一旦合并就会有覆盖别人代码的问题,除非各个分支修改的文件跟别人不重复才行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-3-3 16:43:57 | 显示全部楼层
邪恶海盗 发表于 2025-3-3 16:33
提交上去的时候需要审核的,向上提交时与主版本相同的应该默认忽略,不同(修改、增加)则提示,你看文件修 ...

假如有AB两个分支都修改了这个test.yml文件,A分支先提交了,那B分支提交的时候会不会把A的改动覆盖掉?
回复 支持 反对

使用道具 举报

发表于 2025-3-3 17:05:48 | 显示全部楼层
猪小呆 发表于 2025-3-3 16:43
假如有AB两个分支都修改了这个test.yml文件,A分支先提交了,那B分支提交的时候会不会把A的改动覆盖掉? ...

合并并不是你想的那样自动合并的,当代码有冲突的时候(就是你说的两个人都改了同一个文件中的代码,后面提交的就是冲突),GIT的GUI工具会把冲突的地方列出来,由你手工决定怎么合并,所以你想多了

正常公司GIT都会有代码审核这一个流程,会评审各自的代码,给出意见
回复 支持 反对

使用道具 举报

发表于 2025-3-3 17:07:35 | 显示全部楼层
猪小呆 发表于 2025-3-3 16:43
假如有AB两个分支都修改了这个test.yml文件,A分支先提交了,那B分支提交的时候会不会把A的改动覆盖掉? ...

两个分支分别提交是不影响的。把两个分支合并的时候,会自动处理冲突,自动处理不了的,需要人工来处理,处理完毕,才算合并完成。
回复 支持 反对

使用道具 举报

发表于 2025-3-3 17:11:27 来自手机浏览器 | 显示全部楼层
综上所述,权力说了算。
回复 支持 反对

使用道具 举报

发表于 2025-3-3 17:22:09 | 显示全部楼层
wy71h 发表于 2025-3-3 17:11
综上所述,权力说了算。

+1,精屁...


二○二五年三月三日
回复 支持 反对

使用道具 举报

发表于 2025-3-4 10:13:51 来自手机浏览器 | 显示全部楼层
猪小呆 发表于 2025-3-3 16:43
假如有AB两个分支都修改了这个test.yml文件,A分支先提交了,那B分支提交的时候会不会把A的改动覆盖掉? ...

所以提交之前都会拉取最新代码,尽量避免冲突
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-3 11:00 , Processed in 0.187200 second(s), 10 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表