Git企业级开发(多人协作)
Git的多人协作开发
这里我们在远端的master分支中新增"aaa","bbb"两个分别不同的单词,但是开发者1新增aaa,开发者2新增bbb。
在这里我们会创建dev分支来协作开发,通过在Linux系统和Windows系统上面分开来进行开发来模拟多人协作场景。这里的分支我们可以在本地或者在仓库中进行创建,这里我选择在远程进行创建。
创建dev分支
点击分支后,在新的页面进行分支的创建。 创建后此时远程仓库就会有两个分支,通过git branch查看当前本地仓库的分支。git branch -r是远程仓库的分支。
使用git pull将远程的dev分支拉取下来,也就是将在gitee中创建的分支拉取下来。不管是push还是pull都是针对分支操作的,。但是比如git pull的时候没有指定分支,就必须要建立连接,否则无法生效。
建立本地的dev分支和远程连接
通过 git checkout -b dev origin/dev创建分支并且和远程仓库中的dev分支进行连接。
通过git branch -vv就能查看到建立起连接。
此时就已经将本地的dev分支推送到远程的dev分支下面了。 当然了远程仓库并没有进行合并,合并后的master分支才能使用。
如果当前分支没有和远程建立连接的时候,就要主动进行分支的建立,否则无法进行拉取和推送。
该命令就是建立连接的语句。
分支冲突
在同一个位置输入了不同的数据,比如在某一行同时输入了aaa和bbb,这时候就会出现冲突,但是这时候就需要git pull先拉取下来在本地进行操作。
接着针对本地仓库的内容进行操作,把我们所需要的保存下来再提交push就可以了。
这里我们已经解决了本地仓库的合并问题,但是远程仓库的合并还没解决。
dev与master进行合并(同一分支多人协作)
PR操作(申请单push操作1推荐)
新疆一个PR单子,会自动跳出申请单,我们将他创建好之后,点击下边的创建pull request就可以了,到时候会提交给管理员审查。
本地合并
在本地上进行合并,然后推送到远程仓库,但是实际上不推荐,上面的pr实际上需要经过别人审核的,更加安全,但是在本地master进行提交是不需要审查的,可能出现问题更大。
在这里有个小提示,我们可以先把dev去merge我们的master,而不是master去merge我们的dev,这样可以避免一些问题,有冲突可以在本地dev解决。解决后切换到master再去merge dev,但是要保证master最新(在master之前进行pull操作)。
首先需要切换到master进行pull操作,保证代码是最新的,让dev与master进行合并。
然后再进行merge 我们的dev分支,这样比较安全,虽然说切换很多次分支,但是实际上为了安全也是不得已的行为。这时候再提交master任务就结束了。
总结:
- 首先,可以试图用 git push origin branch-name 推送自己的修改;
- 如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并;
- 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用 git push origin branch-name 推送就能成功!
- 功能开发完毕,将分支 merge 进 master,最后删除分支。
帮助他人开发
假如要帮助别人进行开发的时候,我们就要切换到别人的分支进行开发,这时候就要用git pull进行拉取操作。将远程仓库拉取下来。
gitpull操作内容:
- 拉取远程仓库内容。
- 拉取对应的分支内容。
这时候就切换到别人的远程仓库,并且进行连接的情况了。
他人开发完成之后,此时本人如果回到开发时,要进行一次拉取操作,保证代码是最新的。
此时就要指定分支名字和实际的名字了。
此时就再次能进行开发了。
查看git本地和远程连接命令
git branch -vv
dev与master进行合并(不同分支多人协作)
我们在不同分支下面协作完成不同的文件,让某个功能私有一个分支进行开发。如果远程仓库没有连接就可以使用如下命令直接在远程仓库建立连接。
git push origin feature-1
此时在远程就可以看到多了一个function1的文件。相同的操作,就可以看到feature两个分支都创建了两个分支,分别创建了不同的文件。
在这个操作没有发生任何冲突,因为是在不同的分支中进行的。
在经过测试人员和审查人员的同意之后就可以进行合并操作了,但是还是要再提醒一下,必须要先合并master分支到dev分支,再合并到master分支,很重要。
解决远程分支删除后本地依然看见
git remote prune origin
此时就能将已经不用的远程分支删除。
删除本地分支的方法:
git branch -d [本地分支的名字]