0


git多人协作实战

多人协作开发

  • 任务1

  • 常用指令

master分支(主分支)用来存放每一阶段完成的项目,develop(开发分支)用来开发项目,当develop分支代码编写完成时,将完成的代码合并到master分支上,接着再回到develop分支开发代码,直到项目完全编写出来,这样的好处是每一个阶段的代码都可以运行。
查看已建立的分支(正在使用的分支)git branch创建分支git branch 分支名 切换分支git checkout 分支名删除分支git branch -d 分支名查看所有分支git branch -a获得分支最新的代码git pull指定本地分支与远程分支连接git branch --set-upstream-to=origin/feature-2 feature-2远程连接指定分支git checkout -b feature-2 origin/feature-2

  • 开发者1和开发者2操作切换到develop(开发分支)

  • 开发者1修改test文档,查看develop分支预览修改

lvqianyi@WRGHO-GEMYIETDT:~/llovew/python$ sudo vi test.txt
[sudo] password for lvqianyi:
Sorry, try again.
[sudo] password for lvqianyi:
lvqianyi@WRGHO-GEMYIETDT:~/llovew/python$ ls
README.en.md  README.md  test.txt
lvqianyi@WRGHO-GEMYIETDT:~/llovew/python$ git add test.txt
lvqianyi@WRGHO-GEMYIETDT:~/llovew/python$ git status
lvqianyi@WRGHO-GEMYIETDT:~/llovew/python$ git commit -m 'ubuntu test.txt'
[develop d25fac0] ubuntu test.txt
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt
lvqianyi@WRGHO-GEMYIETDT:~/llovew/python$ git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 275 bytes | 137.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:llovews/python.git
   5e809de..d25fac0  develop -> develop
  • 若开发者2也对此文档进行修改则会发生冲突

推送失败,因为开发者1的最新提交和你推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull把最新提交从origin/develop抓下来,然后在本地进行合并,并解决冲突,在推送.操作如下 :

  • 冲突解决继续推送

  • 查看分支

  • 合并分支

在分支上进行多人协作开发,但最终的目的是要将开发后的代码合并到master上去,让我们的项目运行最新的代码。切换到master分支,pull一下,保证本地的master是最新内容,合并前这么做是一个好习惯。操作如下 :

切换⾄ develop 分⽀, 合并 master 分⽀这么做是因为如果有冲突,可以在develop分⽀上进⾏处理,⽽不是在在master上解决冲突。

切换至master分支,合并dev分支

  • 错误解决

lvqianyi@WRGHO-GEMYIETDT:~/llovew/python$ git pull
error: You have not concluded your merge (MERGE_HEAD exists).
hint: Please, commit your changes before merging.
fatal: Exiting because of unfinished merge.
lvqianyi@WRGHO-GEMYIETDT:~/llovew/python$ git merge develop
fatal: You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you merge.
// 撤销合并
git reset --merge
  • 合并综合操作

1.切换主节点
git checkout master
2.更新
git pull
3.切换dev
git checkout develop
4.更新
git pull
5.从dev节点合并到master
git merge master
6.切换主节点
git checkout master
7.合并dev节点
git merge develop
8.查看状态
git status
9.上传分支到主节点完成合并
git push origin master
  • 任务2

目标:远程master分支下新增function1和function2文件

实现:由开发者1新增function1,开发者新增function2

条件:在不同分支下协作完成

一般情况下,如果有多需求需要多人同时进行开发,是不会在一个分支上进行多人开发的而是一个需要或一个功能点就要创建一个feature分支.

现在同时有两个需求需要协作完成,那么便可以各自创建一个分支来完成自己的工作.在上个部分我们可以从码云直接创建远程分支,在本地创建的分支也可以通过推送的方式发送到远端。在这里我就采用这种方式。参考文章链接。

  • 开发者1操作

新增本地分支feature-1并切换到该分支

新增需求内容创建func1文件

将新建立的分支feature-1推送至远端

  • 开发者2操作

开发者2创建并切换到feature-2分支

在feature-2分支下新增func2文件

将feature-2分支推送远端

此时,在本地开发者2看不见开发者1新建的文档,开发者1也看不见开发者2新建的文档。并且推送各自的分支时,并没有任何冲突。

码云上的分支显示,feature-1和feature-2分支互不干扰

  • 开发者1完成开发者2的任务

开发者2将feature-2的分支名告诉开发者1,开发者1在自己系统上(Ubuntu)切换到开发者2的feature-2分支上继续开发。

首先先拉取远程仓库的内容,可以看到远程已经有了feature-2

切换到 feature-2分支上,可以和远程的 feature-2 分支关联起来,否则将来只用git push推送内容会失败。切换成功后,便可以看见 feature-2 分支中的func2文件,接着开发者1便可完成开发者2的任务。

编辑文档并完成推送

查看远程状态完成推送

  • 开发者2接着开发者1帮忙开发的文档接着开发

开发者2发现代码没有pull下来

pull无效的原因是开发者2没有指定本地 feature-2分支 与远程origin/feature-2分支的链接,根据提示,设置 feature和origin/feature-2的链接即可 :

开发者2继续完成对自己创建的feature-2分支的开发并推送至远程

远程查看feature-2分支状态

目前,开发者2的本地代码和远端保持严格一致。开发者1和开发者2可以继续在不同的分支下进行协同开发了。

各自功能开发完毕后,我们需要将代码合并到master中才算真正意义上的开发完毕。

  • 开发者2在远程手动完成

基本信息添加完成后转移至指定审核员审查

审查员通过

审核员进行分支合并

至此手动合并分支完成

  • 开发者1本地上传合并

先将分支切换至feature-1(上述将分支切换到了feature-2)并更新代码

再切换至主节点(合并前先获取主节点最新代码养成习惯)获取最新代码

切换⾄ feature-1 分⽀, 合并 master 分⽀这么做是因为如果有冲突,可以在feature-1分⽀上进⾏处理,⽽不是在在master上解决冲突,然后再切换至master分支,合并feature-1分支,最后再上传至远程。

遇到如下问题

此时远程仓库状态

  • 解决git branch -a打印已被删除的远程分支的方法

使用命令git remote show origin,可以查看remote地址,远程分支,还有本地分支与之相对于关系等信息,此时我们可以看到远程仓库已经不存在的分支,根据提示,使用git remote prune origin命令这样就删除了那些远程仓库不存在的分⽀。

标签: git

本文转载自: https://blog.csdn.net/m0_61517307/article/details/134585892
版权归原作者 llovew. 所有, 如有侵权,请联系我们删除。

“git多人协作实战”的评论:

还没有评论