🌈个人主页: 秦jh__https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343
🔥 系列专栏: https://blog.csdn.net/qinjh_/category_13026221.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=13026221&sharerefer=PC&sharesource=qinjh_&sharefrom=from_link

目录
[远程分⽀删除后,本地 git branch -a 依然能看到的解决办法](#远程分⽀删除后,本地 git branch -a 依然能看到的解决办法)
前言
💬 hello! 各位铁子们大家好哇。
今日更新了git多人协作的内容
🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝
多⼈协作
多⼈协作⼀

⽬前,我们的仓库中只有⼀个 master 主分⽀,但在实际的项⽬开发中,在任何情况下其实都是不允许 直接在 master 分⽀上修改代码的,这是为了保证主分⽀的稳定。所以在开发新功能时,常常会新建其 他分⽀,供开发时进⾏迭代使⽤。

我们可以在 gitee 上新建 dev 远程分⽀供我们使⽤

创建成功的远程分⽀是可以通过 Git 拉取到本地来,以实现完成本地开发⼯作
git branch 其实只能查看本地分⽀,要查看远程分⽀需要加上-r选项。
但前提是要pull⼀下拉取最新的远端仓库,才能看到最新的内容。
这里讲解一下为什么可以用git pull拉取远程:

我们之前拉取推送的时候,后面都是跟有目标分支的。这时候是不需要建立连接的。
什么时候要建立连接呢?当我们想要简写的时候。
前面克隆的时候,是会自动建立连接的,所以上面就可以简写。
在 windows 环境下,再 clone 同⼀个项⽬仓库,来模拟和你⼀起协作开发的另⼀名⼩伙伴:

找一个文件夹,shift+右键然后打开Powershell窗口,

然后克隆仓库,克隆完成后,文件夹下就有对应的仓库内容了

此时的状态如上图

上面创建并切换到 dev 分⽀供我们进⾏本地开发。我们切换到的是本地的 dev 分⽀,后面的 origin/dev 会将本地分⽀和远程分⽀的进⾏关系链接。
通过git branch -vv 选项,可以看到本地的某分支和远程的某分支建立起了连接。
建立了连接后,就可以用短命令了。
git branch -a 选项可以看到当前所在的分支和本地分支。


这时候在dev分支上进行开发,然后git push 到远端。
推送成功后,远端也就有了对应的修改。
此时的状态:

接下来假如你的⼩伙伴要和你协同开发:

假如他的dev分支没有和远程的dev建立连接。

直接git pull是无法拉取的。此时就要用 git branch --set-upstream-to=origin/<branch> dev来建立连接。


这时推送失败,因为你的⼩伙伴的最新提交和你推送的提交有冲突,解决办法也很简单,Git已经提⽰ 我们,先⽤ git pull 把最新的提交从 origin/dev 抓下来,然后,在本地进⾏合并,并解决冲 突,再推送


手动解决冲突即可。

最后再进行推送,远端的码云就能看到我们的新提交了!
不过此时推送到的是远程的dev分支,并不是master分支。
我们是在分⽀上进⾏多⼈协作开发,但最终的⽬的是要将开发后的代码合并到 master上去,让我们的项⽬运⾏最新的代码。
这里有两种方式来进行合并:
1.PR申请单

通过PR申请单,让管理员进行合并。
2.本地



此时,查看远端仓库,master已经是最新代码了
此时,dev 分⽀对于我们来说就没⽤了, 那么 dev 分⽀就可以被删除掉。我们可以直接在远程仓库中 将dev分⽀删除掉:
总结⼀下,在同⼀分⽀下进⾏多⼈协作的⼯作模式通常是这样:
- ⾸先,可以试图⽤ git push origin branch-name 推送⾃⼰的修改;
- 如果推送失败,则因为远程分⽀⽐你的本地更新,需要先⽤ git pull 试图合并;
- 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再⽤git push origin branch-name推送就能成功!
- 功能开发完毕,将分⽀ merge 进 master,最后删除分⽀。
多⼈协作二
⼀般情况下,如果有多需求需要多⼈同时进⾏开发,是不会在⼀个分⽀上进⾏多⼈开发,⽽是⼀个需 求或⼀个功能点就要创建⼀个 feature 分⽀。
现在同时有两个需求需要你和你的⼩伙伴进⾏开发,那么你们俩便可以各⾃创建⼀个分⽀来完成⾃⼰ 的⼯作。在前面我们已经了解了可以从码云上直接创建远程分⽀,其实在本地创建的分⽀也可以 通过推送的⽅式发送到远端。在这个部分我们就来⽤⼀下这种⽅式。

对于你来说,可以进⾏以下操作:

新增本地feature-1分支时,要先切到master分支,pull一下,保证此时的master分支是最新的,然后才能创建feature-1分支。
远端没有feature-1分支,从本地直接推送该分支到远端,远端会自动创建该分支。
此时的状态图如下:
对于⼩伙伴来说,可以进⾏以下操作:

创建feature-2分支时,要跟feature-1分支一样,保证master分支是最新的。
此时,在本地,你看不⻅他新建的⽂档,他看不⻅你新建的⽂档。并且推送各⾃的分⽀时,并没有任 何冲突,你俩互不影响,⽤起来很舒服
此时状态如下:
假如你的⼩伙伴突然⽣病了,但需求还没开发完,需要你帮他继续开发,于是他便把 feature-2 分⽀名告诉你了。这时你就需要在⾃⼰的机器上切换到 feature-2 分⽀帮忙继续开发,要做 的操作如下:


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

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

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

⽬前,⼩伙伴的本地代码和远端保持严格⼀致。你和你的⼩伙伴可以继续在不同的分⽀下进⾏协同开 发了。
各⾃功能开发完毕后,不要忘记我们需要将代码合并到master中才算真正意义上的开发完毕。
由于你的⼩伙伴率先开发完毕,于是开始 merge :

当你的⼩伙伴将其代码 merge 到 master 后,这是你也开发完成了,也需要进⾏ merge 到 master 操作,于是你:


此时远程仓库的状态:

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

这就是多⼈协作的⼯作模式,⼀旦熟悉了,就⾮常简单。
远程分⽀删除后,本地 git branch -a 依然能看到的解决办法
当前我们已经删除了远程的⼏个分⽀,使⽤ git branch -a 命令可以查看所有本地分⽀和远程分 ⽀,但发现很多在远程仓库已经删除的分⽀在本地依然可以看到。例如:


使⽤命令 git remote show origin ,可以查看remote地址,远程分⽀,还有本地分⽀与之相 对应关系等信息。

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

这样就删除了那些远程仓库不存在的分⽀。


