Git:利用Git进行多人协作的场景模拟

文章目录

  • 场景一
  • 场景二
  • 解决一些后续问题

场景一

Git是一个多人协作下完成的操作,因此Git是需要进行一些多人协作的场景的,那么这里就使用LinuxWindows两个平台进行模拟实现两个用户进行的协作

首先把仓库克隆到本地,再加入两个用户的信息,因为要进行多人协作一定是有两个Gitee的账号的

Linux下完成基本操作:

Git:利用Git进行多人协作的场景模拟_第1张图片
此时,在Gitee中也同步进行了更新:

Git:利用Git进行多人协作的场景模拟_第2张图片
那现在切换到Windows下的用户,Windows下用户也想进行这个项目的开发,那么首先要先创建分支拉取仓库中的数据

在这里插入图片描述
此时Windows用户下的仓库中就有了Linux用户下更新的内容和信息,修改信息后进行addcommit的操作,此时Gitee上就有了新的提交记录

Git:利用Git进行多人协作的场景模拟_第3张图片
那么假设此时Linux用户还在进行开发,又进行了一些修改,那么会不会因为Windows用户的提交而导致Linux用户的提交直接被覆盖?

下面用实验进行模拟

Git:利用Git进行多人协作的场景模拟_第4张图片
解决方法就是利用pull将信息拉取到本地仓库,不同的信息会以冲突的报错进行提示,手动修改后提交即可解决问题,解决后再提交到Gitee即可,而Windows用户下次使用的时候,也需要进行一次pull拉取数据,否则依旧在push的时候会报错,也需要解决访问冲突的问题

Git:利用Git进行多人协作的场景模拟_第5张图片
Git:利用Git进行多人协作的场景模拟_第6张图片
那么下面解决怎么把分支进行合并的问题

首先肯定是要进行一次pull操作,将远端仓库中的master拉取到本地中,再在本地中将master分支合并到dev分支,解决掉冲突后再合并到master分支,再push到仓库中

总结一下

当实际在开发时,如果一个分支有两个人在使用时,完成自己的代码后,首先可以尝试一下git push进行推送自己的修改,如果推送失败,就说明远程仓库进行了一定的更新,那么就首先需要进行git pull进行拉取远程仓库进行合并

如果合并有冲突,就进行解决这个冲突,之后进行提交即可

功能开发完毕后,将分支mergemaster中,最后删除分支即可

场景二

一般情况下,如果有需求需要多人同时进行开发,是不会在一个分支上进行开发的,而是一个需求点就创建一个分支,也就是说场景一的情况一般不会出现

那么下面就模拟场景二这个场景:

  • 两个人走两条分支
  • 第一个分支创建feature1文件
  • 第二个分支创建feature2文件
  • 提交到Gitee

那么首先到Linux环境下进行操作:

Git:利用Git进行多人协作的场景模拟_第7张图片

可以使用命令直接将本地分支提交到远端分支:

git push origin feature1

此时Gitee中有feature1的分支信息了

Git:利用Git进行多人协作的场景模拟_第8张图片

此时再切换回Windows用户进行使用:

Git:利用Git进行多人协作的场景模拟_第9张图片
此时Gitee中也有Windows的更新信息了

Git:利用Git进行多人协作的场景模拟_第10张图片
那么现在就有三个分支,如何对其他两个分支合并到master分支就是下一步要进行的步骤

Git:利用Git进行多人协作的场景模拟_第11张图片
如果Windows用户需要Linux用户帮忙开发,可以吗?

答案是可以的,需要设计到切换路径的问题

Git:利用Git进行多人协作的场景模拟_第12张图片
此时结束后,如果Windows用户想要继续开发,只需要把信息拉取回来再继续开发即可

Git:利用Git进行多人协作的场景模拟_第13张图片
提示未建立链接,只需要重新建立链接即可

Git:利用Git进行多人协作的场景模拟_第14张图片
改完信息后上传到Gitee上即可,此时Gitee中关于feature2的分支中就既有Linux开发也有Windows下的开发

Git:利用Git进行多人协作的场景模拟_第15张图片
合并代码这里采用的是PR申请的写法,整体比较简单,提交申请由审核人员进行审核即可

解决一些后续问题

删除远程分支后但是还能看到远程分支怎么办?

[test@VM-16-11-centos test_git]$ git branch -a
  feature1
* feature2
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/feature1
  remotes/origin/feature2
  remotes/origin/master

此时可以选择使用一个命令

git remote show origin

用以展现远程分支和本地分支之间对应的关系

[test@VM-16-11-centos test_git]$ git remote show origin
* remote origin
  Fetch URL: https://gitee.com/zhaobohan/test_git.git
  Push  URL: https://gitee.com/zhaobohan/test_git.git
  HEAD branch: master
  Remote branches:
    feature1                tracked
    feature2                tracked
    master                  tracked
    refs/remotes/origin/dev stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    feature2 merges with remote feature2
    master   merges with remote master
  Local refs configured for 'git push':
    feature1 pushes to feature1 (up to date)
    feature2 pushes to feature2 (local out of date)
    master   pushes to master   (up to date)

再根据推荐直接删除即可

[test@VM-16-11-centos test_git]$ git remote prune origin
Pruning origin
URL: https://gitee.com/zhaobohan/test_git.git
 * [pruned] origin/dev

这样就完成了两个多人协作的场景模拟,下一篇进行一个项目的模拟开发流程

你可能感兴趣的:(Git,知识总结,git)