场景一
Git是一个多人协作下完成的操作,因此Git是需要进行一些多人协作的场景的,那么这里就使用Linux
和Windows
两个平台进行模拟实现两个用户进行的协作
首先把仓库克隆到本地,再加入两个用户的信息,因为要进行多人协作一定是有两个Gitee
的账号的
在Linux
下完成基本操作:
此时,在Gitee
中也同步进行了更新:
那现在切换到Windows
下的用户,Windows
下用户也想进行这个项目的开发,那么首先要先创建分支拉取仓库中的数据
此时Windows
用户下的仓库中就有了Linux
用户下更新的内容和信息,修改信息后进行add
和commit
的操作,此时Gitee
上就有了新的提交记录
那么假设此时Linux
用户还在进行开发,又进行了一些修改,那么会不会因为Windows
用户的提交而导致Linux
用户的提交直接被覆盖?
下面用实验进行模拟
解决方法就是利用pull
将信息拉取到本地仓库,不同的信息会以冲突的报错进行提示,手动修改后提交即可解决问题,解决后再提交到Gitee
即可,而Windows
用户下次使用的时候,也需要进行一次pull
拉取数据,否则依旧在push
的时候会报错,也需要解决访问冲突的问题
那么下面解决怎么把分支进行合并的问题
首先肯定是要进行一次pull
操作,将远端仓库中的master
拉取到本地中,再在本地中将master
分支合并到dev
分支,解决掉冲突后再合并到master
分支,再push
到仓库中
总结一下
当实际在开发时,如果一个分支有两个人在使用时,完成自己的代码后,首先可以尝试一下git push
进行推送自己的修改,如果推送失败,就说明远程仓库进行了一定的更新,那么就首先需要进行git pull
进行拉取远程仓库进行合并
如果合并有冲突,就进行解决这个冲突,之后进行提交即可
功能开发完毕后,将分支merge
到master
中,最后删除分支即可
场景二
一般情况下,如果有需求需要多人同时进行开发,是不会在一个分支上进行开发的,而是一个需求点就创建一个分支,也就是说场景一的情况一般不会出现
那么下面就模拟场景二这个场景:
- 两个人走两条分支
- 第一个分支创建
feature1
文件 - 第二个分支创建
feature2
文件 - 提交到
Gitee
那么首先到Linux
环境下进行操作:
可以使用命令直接将本地分支提交到远端分支:
git push origin feature1 • 1
此时Gitee
中有feature1
的分支信息了
此时再切换回Windows
用户进行使用:
此时Gitee
中也有Windows
的更新信息了
那么现在就有三个分支,如何对其他两个分支合并到master
分支就是下一步要进行的步骤
如果Windows用户需要Linux用户帮忙开发,可以吗?
答案是可以的,需要设计到切换路径的问题
此时结束后,如果Windows
用户想要继续开发,只需要把信息拉取回来再继续开发即可
提示未建立链接,只需要重新建立链接即可
改完信息后上传到Gitee
上即可,此时Gitee
中关于feature2
的分支中就既有Linux
开发也有Windows
下的开发
合并代码这里采用的是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
这样就完成了两个多人协作的场景模拟,下一篇进行一个项目的模拟开发流程