文章目录
- 准备工作
- 多人协作场景2-多分支协作
- 补充:关于建立连接
- 远程分⽀删除后,本地依然能看到的解决办法
准备工作
在windosw环境下,再克隆同一个项目仓库,模拟一起协作开发的小伙伴
到此,相当于有了两个⽤⼾,分别在linux和windows上针对于同项⽬进⾏协作开发,我们的准备⼯作到此结束。
但是在实际开发当中,每个⽤⼾都有⾃⼰的gitee/github账号,如果要多⼈进⾏协同开发,必须要将⽤⼾添加进开发者,⽤⼾才有权限进⾏代码提交
邀请用户
多人协作场景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)]
此时码云上会增加一个分支:
Windows下的操作
1.新建一个新分支feature-2并切换到新分支,新建文件实现需求
2.将新分支feature-2推送到远端
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HCOwm7ad-1690597881082)(https://mangoimage.oss-cn-guangzhou.aliyuncs.com/202307281649042.png)]
此时,在本地,你看不⻅他新建的⽂档,他看不⻅你新建的⽂档。并且推送各⾃的分⽀时,并没有任何冲突,你俩互不影响,⽤起来很舒服!!
观察此时码云的状态:
正常情况下,你俩就可以在⾃⼰的分⽀上进⾏专业的开发了!
但是假设有这么种情况:你的⼩伙伴突然⽣病了,但需求还没开发完,需要你帮他继续开发。这时你就需要在⾃⼰的机器上切换到feature-2分⽀帮忙继续开发,要做的操作如下:
Linux下的操作:
1.必须先拉取远端仓库的内容,此时就可以看到远端的feature-2分支
2.切换到feature-2分⽀上,可以和远程的feature-2分⽀关联起来, 否则将来只使⽤ git push 推送内容会失败
- (远程已经有分支,然后本地没有的情况下创建分支并且建立连接):git checkout -b 分支名 origin/分支名:本地创建新分支&切换到新分支& 将本地分支和远程分支建立连接
3.切换成功后,便可以看⻅feature-2分⽀中的function2⽂件了,接着就可以帮⼩伙伴进⾏开发,然后推送
查看远程状态:可以发现推送成功了
这时,你的⼩伙伴已经修养的差不多,可以继续进⾏⾃⼰的开发⼯作,那么他⾸先要获取到你帮他开发的内容,然后接着你的代码继续开发。或者你已经帮他开发完了,那他也需要在⾃⼰的电脑上看看你帮他写的代码:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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/分支名 分支名
- 还有一种方法就是上面的,在创建分支的时候就让本地分支和远程的分支建立连接
⽬前,⼩伙伴的本地代码和远端保持严格⼀致。你和你的⼩伙伴可以继续在不同的分⽀下进⾏协同开发了。
补充:关于建立连接
建立连接之后,就可以直接使用简写的命令 如果不连接就需要使用长的命令
各⾃功能开发完毕后,不要忘记我们需要将代码合并到master中才算真正意义上的开发完毕。
windows进行merge:
1.切换到master分支,pull一下,保证本地master是最新的内容
2.切换到dev分支,然后合并master分支,目的是为了如果有冲突直接在dev分支上进行处理
3.切换到master分支,合并feature-2分支
4.将master分支推送至远端
此时在远端的master分支上:就可以看到小伙伴完成的内容
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!!
- 切换⾄ master 分⽀,合并 feature-1 分⽀
- 将 master 分⽀推送⾄远端
此时远程仓库的状态:
此时, feature-1 和 feature-2 分⽀对于我们来说就没⽤了,那么我们可以直接在远程仓库中将dev分⽀删除掉
远程分⽀删除后,本地依然能看到的解决办法
当前我们已经删除了远程的⼏个分⽀,使⽤git branch -a
命令仍然可以看到所有本地分⽀和远程分⽀,但发现很多在远程仓库已经删除的分⽀在本地依然可以看到
git remote show origin:查看remote地址,远程分⽀,还有本地分⽀与之相
对应关系等信息
此时我们可以看到那些远程仓库已经不存在的分⽀,根据提⽰,使⽤:git remote prune
origin命令删除了那些远程仓库不存在的分⽀
而对于本地仓库的分支的删除:直接使用git branch -d 分支名
进行删除