【git】多人协作

🌈个人主页: 秦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 命令:

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

相关推荐
小坏讲微服务4 小时前
Docker Compose搭建Git仓库私服上传微服务
分布式·git·docker·微服务·容器·springcloud·springalibaba
七号练习生.c13 小时前
Git常用命令速查
大数据·git
大筒木老辈子1 天前
Git笔记---其他常用操作
笔记·git
小二·1 天前
Git 高频操作命令大全(分类整理 + 修正说明)
大数据·git·elasticsearch
目南殇1 天前
Git 命令基础使用指南:从初始化到提交的完整流程
git
crossoverJie1 天前
Git cherry-pick 使用小技巧
git·github
、shadow1 天前
切换GIT账号
git
因为奋斗超太帅啦1 天前
Git分布式版本控制工具学习笔记(一)——git本地仓库的基本使用
笔记·git·学习
BestOrNothing_20151 天前
Git 中新建学习分支 + 暂存修改 + VSCode 可视化查看改动(超详细教程)
git·vscode·版本控制·开发技巧