如何跟队友进行Git协同开发。(本篇为写给队友看的文章)
本项目大多数
本地
操作都可以使用GUI完成,具体使用哪种GUI可自行选择:
以及各种IDE自带Git(比如vscode,CLion,VS等均有附带)
具体使用教程可以自行B站搜索。本教程全程使用Terminal进行,主要操作可在GUI内搜索。
P.S. 其实本博客第一篇文章就是讲Git的,不过那会的我实在是太菜了(虽然现在也很菜),甚至部分图片也挂了(好不容易才找回来一部分),所以不推荐看👀。
首先你需要自己将Github中的项目Clone到自己本地当中,本教程以TestRepository为示例:
首先先从Github仓库中复制链接:
然后找一个你拿来存代码的文件夹,输入:
shellgit clone git@github.com:TaixuEngineGroup/TestRepository.git
然后你就会发现多出来一个文件夹,此文件夹便是clone下来的远端仓库。
如果打开隐藏文件显示,可以看到.git
文件夹,此文件夹储存了所有本地Git记录,如果删除了你本地Git记录和远程仓库连接都会消失,请慎重操作。
下面讲解如何实现一个功能并提交到项目中。
首先先查看分支情况:
可以看到这里有两个分支,其中:
禁止直接push到main和dev分支中务必使用pr
禁止直接push到main和dev分支中务必使用pr
禁止直接push到main和dev分支中务必使用pr
关于原因可以参考:为什么不能直接push到master分支?
如果dev或者main分支混乱绝对是地狱级别解决难度......
Clone下来的仓库默认是使用main
分支的,如下图:
但是我们想要将其切换到dev分支,所以我们clone之后需要首先要在clone后的本地仓库内执行下面的指令:
shellgit checkout dev
此时,分支便会切换:
此时我们已经正确设定好分支,可以开发了。
在开发分之前请务必进行pull操作!:
shellgit pull
我们假设有这么一个需求:
我们现在单独实现一个”HelloWorld”输出功能:
首先新建一个分支,分支名格式就是需求编号-需求内容
,所以我们这个分支名就叫做1-HelloWorldPrint
:
shellgit branch 1-HelloWorldPrint git checkout 1-HelloWorldPrint
此时便切换到1-HelloWorldPrint
分支中了,然后在test.cpp
中添加了HelloWorld字段:
添加完之后提交:
提交指令没有用过可以看B站的一些教程,比如Git + GitHub 10分钟完全入门(也可以看别人的,非推荐)。
然后就是推送到远程仓库中:
上面两幅图都发生了两件事,一是在本地提交,二是推送到远程仓库,用图片来说就是下面两幅图:
Push则可以理解为将本地Git与远端Github同步:
之后开发完成之后在Github仓库中进行pullrequest操作,请求合并到dev分支中:
然后在群里找别人对你的代码进行code review。
Merge后请务必删除分支:
如果本地不需要更新/更改了请也删除分支:
事实上,分支合并有可能不会直接通过,会发生conflict
,这时候就需要手动解决conflict
,比如同时还有另外一位同学正在开发第二个输出404NotFound
的功能,当他开发完成后进行正常push,准备合并的时候,此时系统就会提示有冲突,需要resolve。
注意:
解决conflict时,别人写的不一定是需要删的,有可能是别的需求,可以一起保留。如果看不出来在群里问。
解决conflict时,别人写的不一定是需要删的,有可能是别的需求,可以一起保留。如果看不出来在群里问。
解决conflict时,别人写的不一定是需要删的,有可能是别的需求,可以一起保留。如果看不出来在群里问。
然后就可以 review and merge 了。
自此,一个简单的需求便完成了。
本文作者:xmmmmmovo
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 许可协议。转载请注明出处!