【iOS开发工程化——开发中】:源代码版本控制

2022-06-04  本文已影响0人  意一ineyee

目录
一、Git简介
二、Git的一些基本操作
 1、安装Git
 2、配置Git全局用户名和全局邮箱
 3、创建本地仓库、创建远程仓库、本地仓库关联远程仓库
 4、代码重置revert
 5、节点阅读、分支和分支小标签阅读、创建分支和合并分支阅读
三、一些规范
 1、gitignore规范
 2、commit规范
 3、分支规范
 4、打tag规范

一、Git简介


Git和SVN的区别

Git是分布式版本控制系统,SVN是集中式版本控制系统。

所谓分布式主要是指本地仓库这个概念,也就是说我们每个人都可以在自己的电脑上通过本地仓库来进行源代码版本控制,它是去中心化的、不需要联网的;所谓集中式主要是指远程仓库这个概念,也就是说我们每个人都必须直接面向同一个远程仓库来进行源代码版本控制,它是中心化的、需要联网的。当然Git也有远程仓库这个概念,但它的远程仓库并非一个必要角色,而只是为了方便不同空间、多人之间的合作而扩展的一个辅助工具。

Git的分区

Git有工作区、暂存区、本地仓库、远程仓库四个分区,工作区--添加add-->暂存区--提交commit-->本地仓库--推送push-->远程仓库--拉取pull-->本地仓库。

工作区:项目目录下.git以外的部分,存储着我们的源代码。

本地仓库:项目目录下.git

广义的本地仓库由暂存区和贮存区两部分组成,但是为了方便描述,后面我们提到本地仓库时都是指狭义的本地仓库——即贮存区。

远程仓库:GitHub || GitLab || Gitee,本地仓库的一个云端备份。

Sourcetree里能看到工作区和暂存区,看不到本地仓库和远程仓库。

Git的文件状态

二、Git的一些基本操作


1、安装Git

安装SourceTree,Git也会被自动安装。

2、配置Git全局用户名和全局邮箱

配置Git全局用户名和全局邮箱,将来我们每次提交的“作者”就是“全局用户名 <全局邮箱>”了。

3、创建本地仓库、创建远程仓库、本地仓库关联远程仓库

创建本地仓库
创建远程仓库
本地仓库关联远程仓库

本地仓库关联远程仓库的方式有两种:HTTPS或SSH,它们俩的主要区别就是HTTPS直接用就行,但是后面每次拉取代码或推送代码都得输入GitHub || GitLab || Gitee的用户名和密码(存储到钥匙串好像就不用输入了),而SSH则需要先配置公钥和私钥后才能使用,以后随便拉取代码或推送代码,这里我们采用SSH的方式来演示。

终端输入ssh-keygen -t ed25519 -C "ineyee@foxmail.com"(后面跟的是你的邮箱),然后连摁三次回车就完事了(期间不用输地址,会有一个默认的存储公钥和私钥的地址;期间不用输密码和确认密码,否则将来在推送代码和拉取代码的时候就得输密码)。

打开.ssh文件夹,就可以看到生成的公钥和私钥。

打开.pub公钥文件,把里面的内容全部复制下来。

打开Gitee,点击你的头像 --> 设置 --> SSH公钥,把复制下来的内容填进去,点击确定即可。

然后在终端输入ssh -T git@gitee.com(如果是GitHub || GitLab,则输入ssh -T git@github.com || ssh -T git@gitlab.com),因为首次使用需要确认并添加主机到本机SSH可信任列表,这就配置成功了。

4、代码重置revert

工作区重置

工作区的内容,如果我们不想要了,可以采用工作区重置。

暂存区重置

暂存区的内容,如果我们不想要了,可以采用暂存区重置。

本地仓库重置

选中要重置到的某次提交,右键选择“将XXX重置到这次提交”。

软合并是指我们重置到这次提交后,这次提交后面的提交记录还会给我们保存在暂存区,以备我们可能还会用到这些代码,如果用不到直接重置掉即可。

混合合并是指我们重置到这次提交后,这次提交后面的提交记录还会给我们保存在工作区,以备我们可能还会用到这些代码,如果用不到直接重置掉即可。

混合合并是指我们重置到这次提交后,这次提交后面的提交记录全部抹掉、不会给我们保存在暂存区或工作区,我们就丢失掉这些可能还会有用的代码了,如果你非常确定这些代码你就是用不到了,再选择强行合并。

远程仓库重置

方式一、不推荐:完成了上面的本地仓库重置,我们可以通过本地仓库重置 + 强制推送的方式达到远程仓库重置的效果,但是这种方式会抹掉提交记录,在团队开发中是不推荐的。

方式二、推荐:推荐的方式是本地仓库重置两次(强行合并一次 + 软合并一次) + 提交、推送的方式,这种方式可以保留提交记录。

先把本地仓库重置到3,注意选择强行合并,以便本地仓库丢掉4、5、6这三次提交的代码,当然你也可以选择软合并或混合合并、然后再自己重置掉保存下来的代码,这样本地仓库就可以比远程仓库少掉不想要的代码了。

然后再把本地仓库重置到远程仓库当前所在的节点6,注意需要选择软合并,这样我们刚才删除4、5、6三次提交代码的操作就会被扔到暂存区了(如果想不通,可以这样想,代码多的那个节点往代码少的那个节点重置时,选择软合并是把多出来的代码——即增加代码操作扔到暂存区了;那代码少的那个节点往代码多的那个节点重置时,选择软合并是把少出来的代码扔到暂存区了——即删除代码操作)

此时我们做一次提交、推送操作,就完成远程仓库重置了。

5、节点阅读、分支和分支小标签阅读、创建分支和合并分支阅读

节点阅读

我们每一次提交都会形成一个节点,当前所在的节点用一个空心圆圈表示,以前的节点用一个实心圆点表示。

分支和分支小标签阅读
创建分支和合并分支阅读

master分支小标签是蓝色的,它对应的节点树就是蓝色的那条;dev分支小标签是粉色的,它对应的节点树就是粉色的那条。dev分支是从master分支的“重置:到3”节点处创建出来的,提交了三次,然后就合并到了master分支(注意:Git会自动帮我们把dev分支的多次提交合并成一次“Merge brach ‘xxx’”的提交合并到master分支),合并分支完成后master分支就会落到“Merge brach ‘xxx’”的这一次提交节点上。

三、一些规范


1、gitignore规范

忽略精确的文件:Extra.txt;忽略所有后缀为此的:*.dll;忽略某个文件夹下所有的文件:abc/

我们项目里的.gitignore文件通常都是去gitignore.io这个网站搜索一个现成的.gitignore文件,把内容复制到我们创建的.gitignore文件里,不过复制完后还有几点需要注意:

2、commit规范

格式:type: content
例如:feature: 新增JS弹窗功能bugfix: 修复JS弹窗bug

1️⃣类型type

2️⃣内容content

末尾不要加.标点

3、分支规范

创建分支规范

1️⃣release分支

2️⃣master分支

3️⃣feature分支

4️⃣bugfix分支

合并分支规范

1️⃣master分支保护和合并请求(PR/MR,Pull Request/Merge Request)

为了减少事故的发生,我们一般会做master分支保护,不允许开发者直接往master分支上推送代码。

而是让开发者在需要合并其它分支到master分支时提交一个合并请求,项目管理者收到合并请求后把经过code review的代码合并到master分支上。

建议开发者在提交合并请求之前,先把master分支的代码合并到feature分支/bugfix分支,看看代码是否有冲突,有冲突的话优先在feature分支/bugfix分支上解决掉,这样可以保证开发者的分支在合并到master分支时没有冲突。

2️⃣普通合并和变基合并

想保留提交记录就用普通合并,不想保留提交记录就用变基合并rebase。

普通合并:Git会自动帮我们把dev分支的多次提交合并成一次“Merge brach ‘xxx’”的提交合并到master分支,dev分支的提交记录会被记录在提交历史上。

reabase:Git不会帮我们把dev分支的多次提交合并成一次统一的提交,而是直接把dev的几次提交平移合并到master分支,dev分支的提交记录不会被记录在提交历史上,就像我们是直接在master分支上修改的一样。

4、打tag规范

每当release分支上线后,我们都会给release分支打一个和线上版本号一致的tag并推送到远程仓库,这样方便我们查看版本、追踪问题。

版本号一般由四个部分组成:MAJOR、MINOR、PATCH、BUILD。

第一次打tag 重大更新或者引入了不可兼容的更新,修改MAJOR 小功能的改善,修改MINOR 修复bug或安全问题,修改PATCH 远程仓库查看tag
上一篇下一篇

猜你喜欢

热点阅读