编辑
2023-02-04
study
00
请注意,本文编写于 446 天前,最后修改于 246 天前,其中某些信息可能已经过时。

目录

写在最前
Clone项目
文件夹结构讲解
实现Feature
预先准备
开发需求
冲突解决

如何跟队友进行Git协同开发。(本篇为写给队友看的文章)

写在最前

本项目大多数

本地

操作都可以使用GUI完成,具体使用哪种GUI可自行选择:

tortoisegit

Github Desktop

以及各种IDE自带Git(比如vscode,CLion,VS等均有附带)

具体使用教程可以自行B站搜索。本教程全程使用Terminal进行,主要操作可在GUI内搜索。

P.S. 其实本博客第一篇文章就是讲Git的,不过那会的我实在是太菜了(虽然现在也很菜),甚至部分图片也挂了(好不容易才找回来一部分),所以不推荐看👀。

Clone项目

首先你需要自己将Github中的项目Clone到自己本地当中,本教程以TestRepository为示例:

首先先从Github仓库中复制链接:

image-20230203193134374

然后找一个你拿来存代码的文件夹,输入:

shell
git clone git@github.com:TaixuEngineGroup/TestRepository.git

image-20230203200222530

然后你就会发现多出来一个文件夹,此文件夹便是clone下来的远端仓库。

文件夹结构讲解

如果打开隐藏文件显示,可以看到.git文件夹,此文件夹储存了所有本地Git记录,如果删除了你本地Git记录和远程仓库连接都会消失,请慎重操作。

image-20230203210255399

实现Feature

下面讲解如何实现一个功能并提交到项目中。

预先准备

首先先查看分支情况:

image-20230203215503654

可以看到这里有两个分支,其中:

  • main分支:用于固定发行版本commit的分支
  • dev分支:实际开发合并的分支,所有功能需要合并到此分支中。

禁止直接push到main和dev分支中务必使用pr

禁止直接push到main和dev分支中务必使用pr

禁止直接push到main和dev分支中务必使用pr

关于原因可以参考:为什么不能直接push到master分支?

如果dev或者main分支混乱绝对是地狱级别解决难度......

Clone下来的仓库默认是使用main分支的,如下图:

git-tutorial

但是我们想要将其切换到dev分支,所以我们clone之后需要首先要在clone后的本地仓库内执行下面的指令:

shell
git checkout dev

此时,分支便会切换:

git-tutorial

此时我们已经正确设定好分支,可以开发了。

开发需求

在开发分之前请务必进行pull操作!:

shell
git pull

我们假设有这么一个需求:

  1. 在原有的test.cpp中添加”Helloworld”输出。
  2. 在test.cpp中添加”404NotFound”输出

我们现在单独实现一个”HelloWorld”输出功能:

首先新建一个分支,分支名格式就是需求编号-需求内容,所以我们这个分支名就叫做1-HelloWorldPrint

shell
git branch 1-HelloWorldPrint git checkout 1-HelloWorldPrint

image-20230203232749179

此时便切换到1-HelloWorldPrint分支中了,然后在test.cpp中添加了HelloWorld字段:

image-20230203233823976

添加完之后提交:

image-20230203234112773

提交指令没有用过可以看B站的一些教程,比如Git + GitHub 10分钟完全入门(也可以看别人的,非推荐)。

然后就是推送到远程仓库中:

image-20230203234748868

上面两幅图都发生了两件事,一是在本地提交,二是推送到远程仓库,用图片来说就是下面两幅图:

git-tutorial

Push则可以理解为将本地Git与远端Github同步:

git-tutorial

之后开发完成之后在Github仓库中进行pullrequest操作,请求合并到dev分支中:

image-20230204000612517

image-20230204000753682

然后在群里找别人对你的代码进行code review。

image-20230204001127930

Merge后请务必删除分支:

image-20230204001557773

如果本地不需要更新/更改了请也删除分支:

image-20230204001643111

冲突解决

事实上,分支合并有可能不会直接通过,会发生conflict,这时候就需要手动解决conflict,比如同时还有另外一位同学正在开发第二个输出404NotFound的功能,当他开发完成后进行正常push,准备合并的时候,此时系统就会提示有冲突,需要resolve。

image-20230204002158143

image-20230204002409353

image-20230204002537452

注意:

解决conflict时,别人写的不一定是需要删的,有可能是别的需求,可以一起保留。如果看不出来在群里问。

解决conflict时,别人写的不一定是需要删的,有可能是别的需求,可以一起保留。如果看不出来在群里问。

解决conflict时,别人写的不一定是需要删的,有可能是别的需求,可以一起保留。如果看不出来在群里问。

然后就可以 review and merge 了。

自此,一个简单的需求便完成了。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:xmmmmmovo

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 许可协议。转载请注明出处!