【Git】多人协作-多分支协作

准备工作

在windosw环境下,再克隆同一个项目仓库,模拟一起协作开发的小伙伴

image-20230728152521154

到此,相当于有了两个⽤⼾,分别在linux和windows上针对于同项⽬进⾏协作开发,我们的准备⼯作到此结束。

但是在实际开发当中,每个⽤⼾都有⾃⼰的gitee/github账号,如果要多⼈进⾏协同开发,必须要将⽤⼾添加进开发者,⽤⼾才有权限进⾏代码提交

image-20230728153405642

邀请用户

image-20230728153429191


多人协作场景2-多分支协作

⼀般情况下,如果有多需求需要多⼈同时进⾏开发,是不会在⼀个分⽀上进⾏多⼈开发,⽽是⼀个需求或⼀个功能点就要创建⼀个feature分支。现在同时有两个需求需要你和你的⼩伙伴进⾏开发,那么你们俩便可以各⾃创建⼀个分⽀来完成⾃⼰的⼯作

现在同时有两个需求需要你和你的⼩伙伴进⾏开发,那么你们俩便可以各⾃创建⼀个分⽀来完成⾃⼰的⼯作。上述我们是通过在码云上直接创建远程分⽀,其实在本地创建的分⽀也可以通过推送的⽅式发送到远端。

想在本地创建分支,最好先切到master分支,然后pull一下,才能保证本地master分支是最新的代码,然后再基于master分支创建新的分支

Linux平台的操作:

1.新建一个新分支feature-1并切换到新分支,新建文件实现需求

2.将新分支feature-1推送到远端

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KNaNNiaA-1690597881082)(https://mangoimage.oss-cn-guangzhou.aliyuncs.com/202307281635301.png)]

此时码云上会增加一个分支:

image-20230728163548969

Windows下的操作

1.新建一个新分支feature-2并切换到新分支,新建文件实现需求

2.将新分支feature-2推送到远端

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HCOwm7ad-1690597881082)(https://mangoimage.oss-cn-guangzhou.aliyuncs.com/202307281649042.png)]

此时,在本地,你看不⻅他新建的⽂档,他看不⻅你新建的⽂档。并且推送各⾃的分⽀时,并没有任何冲突,你俩互不影响,⽤起来很舒服!!


观察此时码云的状态:

image-20230728165116012

正常情况下,你俩就可以在⾃⼰的分⽀上进⾏专业的开发了!


但是假设有这么种情况:你的⼩伙伴突然⽣病了,但需求还没开发完,需要你帮他继续开发。这时你就需要在⾃⼰的机器上切换到feature-2分⽀帮忙继续开发,要做的操作如下:

Linux下的操作:

1.必须先拉取远端仓库的内容,此时就可以看到远端的feature-2分支

2.切换到feature-2分⽀上,可以和远程的feature-2分⽀关联起来, 否则将来只使⽤ git push 推送内容会失败

  • (远程已经有分支,然后本地没有的情况下创建分支并且建立连接):git checkout -b 分支名 origin/分支名:本地创建新分支&切换到新分支& 将本地分支和远程分支建立连接

3.切换成功后,便可以看⻅feature-2分⽀中的function2⽂件了,接着就可以帮⼩伙伴进⾏开发,然后推送

image-20230728170724251

查看远程状态:可以发现推送成功了

image-20230728170754140


这时,你的⼩伙伴已经修养的差不多,可以继续进⾏⾃⼰的开发⼯作,那么他⾸先要获取到你帮他开发的内容,然后接着你的代码继续开发。或者你已经帮他开发完了,那他也需要在⾃⼰的电脑上看看你帮他写的代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xvk6MBzs-1690597881084)(https://mangoimage.oss-cn-guangzhou.aliyuncs.com/202307281710132.png)]

注意:此时Pull⽆效的原因是⼩伙伴没有指定本地feature-2分⽀与远程origin/feature-2分⽀的链接,根据提⽰,设置feature-2和origin/feature-2的链接即可:

  • 当分支创建好了之后,让本地分支和远程的分支建立连接:git branch --set-upstream-to=origin/分支名 分支名
  • 还有一种方法就是上面的,在创建分支的时候就让本地分支和远程的分支建立连接

image-20230728171300629

⽬前,⼩伙伴的本地代码和远端保持严格⼀致。你和你的⼩伙伴可以继续在不同的分⽀下进⾏协同开发了。


补充:关于建立连接

建立连接之后,就可以直接使用简写的命令 如果不连接就需要使用长的命令

image-20230729101853831


各⾃功能开发完毕后,不要忘记我们需要将代码合并到master中才算真正意义上的开发完毕。

windows进行merge:

1.切换到master分支,pull一下,保证本地master是最新的内容

2.切换到dev分支,然后合并master分支,目的是为了如果有冲突直接在dev分支上进行处理

3.切换到master分支,合并feature-2分支

4.将master分支推送至远端

image-20230728173445153


此时在远端的master分支上:就可以看到小伙伴完成的内容

image-20230728173525255


Linux下进行合并

1.切换⾄ master分⽀, pull ⼀下,保证本地的master是最新内容

2.切换⾄ feature-1 分⽀, 合并 master 分⽀。 这么做是因为如果有冲突,可以在feature-1分⽀上进⾏处理,⽽不是在在master上解决冲突。

3.由于feature-1分⽀已经merge进来了新内容,为了保证远程feature-1分⽀最新,所以最好push⼀下

  • 要 push 的另⼀个原因是因为在实际的开发中,master的merge操作⼀般不是由我们⾃⼰在本地进其他⼈员或某些平台merge时,操作的肯定是远程分⽀,所以就要保证远程分⽀的最新。
  • 如果 merge 出现冲突,不要忘记需要commit才可以push!!
  1. 切换⾄ master 分⽀,合并 feature-1 分⽀
  2. 将 master 分⽀推送⾄远端

image-20230728174332733

此时远程仓库的状态:

image-20230728174010784

此时, feature-1 和 feature-2 分⽀对于我们来说就没⽤了,那么我们可以直接在远程仓库中将dev分⽀删除掉

image-20230728174123006


远程分⽀删除后,本地依然能看到的解决办法

当前我们已经删除了远程的⼏个分⽀,使⽤git branch -a命令仍然可以看到所有本地分⽀和远程分⽀,但发现很多在远程仓库已经删除的分⽀在本地依然可以看到

image-20230728174650633

git remote show origin:查看remote地址,远程分⽀,还有本地分⽀与之相
对应关系等信息

此时我们可以看到那些远程仓库已经不存在的分⽀,根据提⽰,使⽤:git remote prune
origin
命令删除了那些远程仓库不存在的分⽀

image-20230728175018325

而对于本地仓库的分支的删除:直接使用git branch -d 分支名进行删除

image-20230728175207234

猜你喜欢

转载自blog.csdn.net/chuxinchangcun/article/details/131992049