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(开发分支) 

git多人协作实战_第1张图片

git多人协作实战_第2张图片

  • 开发者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也对此文档进行修改则会发生冲突

git多人协作实战_第3张图片

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

git多人协作实战_第4张图片

  • 冲突解决继续推送

git多人协作实战_第5张图片

  • 查看分支

git多人协作实战_第6张图片

  • 合并分支

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

git多人协作实战_第7张图片

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

git多人协作实战_第8张图片

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

git多人协作实战_第9张图片

git多人协作实战_第10张图片

  • 错误解决

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并切换到该分支

git多人协作实战_第11张图片

新增需求内容创建func1文件

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

git多人协作实战_第12张图片

  • 开发者2操作

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

git多人协作实战_第13张图片

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

git多人协作实战_第14张图片

将feature-2分支推送远端

git多人协作实战_第15张图片

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

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

git多人协作实战_第16张图片

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

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

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

git多人协作实战_第17张图片

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

git多人协作实战_第18张图片

编辑文档并完成推送

git多人协作实战_第19张图片

查看远程状态完成推送

git多人协作实战_第20张图片

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

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

git多人协作实战_第21张图片

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

git多人协作实战_第22张图片

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

git多人协作实战_第23张图片

远程查看feature-2分支状态

git多人协作实战_第24张图片

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

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

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

git多人协作实战_第25张图片

git多人协作实战_第26张图片

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

git多人协作实战_第27张图片

审查员通过

git多人协作实战_第28张图片

审核员进行分支合并

git多人协作实战_第29张图片

至此手动合并分支完成

git多人协作实战_第30张图片

  • 开发者1本地上传合并

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

git多人协作实战_第31张图片

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

git多人协作实战_第32张图片

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

git多人协作实战_第33张图片

遇到如下问题

git多人协作实战_第34张图片

此时远程仓库状态

git多人协作实战_第35张图片

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

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

你可能感兴趣的:(Git学习,git)