searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Git在企业项目中的运用

2023-06-27 02:01:33
7
0

Git Rebase

尽量合理使用Rebase,而不是大量使用merge,原因很简单,多人开发情况下,使用Git merge会造成大量分支交叉的情况,代码结构看起来很乱,强迫症者很难受。

但是,使用Git Rebase也要合理,尤其是在主分支(master/main)上,禁止在主分支上执行Git Rebase操作,理由是Git Rebase操作会修改commitID,当有别人在主分支拉取代码了之后,你又在主分支执行rebase操作,有可能会导致主分支的commitID改变。

所以,我建议以feature为单位,如果多个人处理一个feature的时候,可以采用rebase操作,但是再合并到主开发分支,或者主发布分支的时候,采用squash and merge操作来减少非必要的commit消息,同时保证主分支的commit安全性。

流程介绍

首先我的项目有四个分支分别是:maindevdev-0dev-1;

这三个分支分别是主分支,开发分支,业务人员0的开发分支、业务人员1的开发分支;

初始的分支情况如图所示:

此时,main分支提交了一个commit<main分支提交第1次>dev分支提交了一个commit<dev添加第1次>dev-0dev-1此时从dev分支创建。

第一步:dev-0提交

我们在dev-0分支提交几次commit,提交后的图如下图所示:

此时dev-0提交了几个分支。

第二步:dev-1提交

我们在dev-1分支同时也提交几次commit,提交后的图如下图所示:

此时dev-0dev-1 彼此之间的分支远离开了。

第三步:dev-0和dev-1合并

dev-0dev-1 开发完毕需要合并分支提交测试了,此时我们使用git rebase 操作,如下:

假如我们最终用dev-0的分支提交测试,此时我们执行:

git checkout dev-0 # 切换到dev-0分支
git rebase origin/dev-1 # 变基到dev-1分支上

此时可能会发生冲突,我们根据提示,解决冲突,执行git add+ git rebase --continue,直到出现successful提示,这表示我们变基成功。

此时分支情况如下图所示:

此时我们的dev-0已经成功变基在dev-1的提交上了,此时我们可以将我们的提交push到dev-0的远程分支上,执行:git push -u origin dev-0会报错,如下图所示:

因为本地的dev-0通过rebase操作添加了dev-1的三个commit而远端的dev-0还没有这三个commit,所以会导致push失败,此时我们需要强制push,执行git push -f origin dev-0

此时的提交图如下图所示:

此时dev-0dev-1 的所有更改都在 dev-0 上。

第三步:dev-0合并到dev分支

接着我们将dev-0合并到 dev 分支上

此时我们通过git来创建一个pull request, 并且在选择合并方式时选择squash and merge,将多个commit消息合并成一个commit再执行提交,再界面上输入合并后的commit消息

此时合并后的分支结构如下图所示:

dev分支上新增一个commit消息,这个时候就已经完成了开发分支的合并工作了,此时只需要根据开发分支去提测就行了😇😇

第四步:简单回滚操作

如果出现问题了怎么办,可以通过回滚操作来回退之前的版本,例如,我们新提交的这个分支有问题,我们需要回退到之前的版本怎么办,通过git reset命令来操作:

git reset "需要回退到哪个版本,这里填那个版本的commit ID"
git push -f origin dev

此时分支结构图如下:

此时dev分支已经回退到上一个版本了,可以通过对dev-0分支再次执行修改操作,然后再通过创建squash and merge请求合并到dev分支上。

结语

  • Git 的操作有很多,但是一定要注意团队开发内部需要统一规范操作,否则等到项目越来越大的时候,维护会变得越来越困难。
  • 多人合作开发的时候,要养成定期git fetch的习惯,并且每隔一段时间合并一次代码,而不是开发完成后再合并,避免冲突爆炸。
0条评论
作者已关闭评论
瑞te尼尔
4文章数
0粉丝数
瑞te尼尔
4 文章 | 0 粉丝
瑞te尼尔
4文章数
0粉丝数
瑞te尼尔
4 文章 | 0 粉丝
原创

Git在企业项目中的运用

2023-06-27 02:01:33
7
0

Git Rebase

尽量合理使用Rebase,而不是大量使用merge,原因很简单,多人开发情况下,使用Git merge会造成大量分支交叉的情况,代码结构看起来很乱,强迫症者很难受。

但是,使用Git Rebase也要合理,尤其是在主分支(master/main)上,禁止在主分支上执行Git Rebase操作,理由是Git Rebase操作会修改commitID,当有别人在主分支拉取代码了之后,你又在主分支执行rebase操作,有可能会导致主分支的commitID改变。

所以,我建议以feature为单位,如果多个人处理一个feature的时候,可以采用rebase操作,但是再合并到主开发分支,或者主发布分支的时候,采用squash and merge操作来减少非必要的commit消息,同时保证主分支的commit安全性。

流程介绍

首先我的项目有四个分支分别是:maindevdev-0dev-1;

这三个分支分别是主分支,开发分支,业务人员0的开发分支、业务人员1的开发分支;

初始的分支情况如图所示:

此时,main分支提交了一个commit<main分支提交第1次>dev分支提交了一个commit<dev添加第1次>dev-0dev-1此时从dev分支创建。

第一步:dev-0提交

我们在dev-0分支提交几次commit,提交后的图如下图所示:

此时dev-0提交了几个分支。

第二步:dev-1提交

我们在dev-1分支同时也提交几次commit,提交后的图如下图所示:

此时dev-0dev-1 彼此之间的分支远离开了。

第三步:dev-0和dev-1合并

dev-0dev-1 开发完毕需要合并分支提交测试了,此时我们使用git rebase 操作,如下:

假如我们最终用dev-0的分支提交测试,此时我们执行:

git checkout dev-0 # 切换到dev-0分支
git rebase origin/dev-1 # 变基到dev-1分支上

此时可能会发生冲突,我们根据提示,解决冲突,执行git add+ git rebase --continue,直到出现successful提示,这表示我们变基成功。

此时分支情况如下图所示:

此时我们的dev-0已经成功变基在dev-1的提交上了,此时我们可以将我们的提交push到dev-0的远程分支上,执行:git push -u origin dev-0会报错,如下图所示:

因为本地的dev-0通过rebase操作添加了dev-1的三个commit而远端的dev-0还没有这三个commit,所以会导致push失败,此时我们需要强制push,执行git push -f origin dev-0

此时的提交图如下图所示:

此时dev-0dev-1 的所有更改都在 dev-0 上。

第三步:dev-0合并到dev分支

接着我们将dev-0合并到 dev 分支上

此时我们通过git来创建一个pull request, 并且在选择合并方式时选择squash and merge,将多个commit消息合并成一个commit再执行提交,再界面上输入合并后的commit消息

此时合并后的分支结构如下图所示:

dev分支上新增一个commit消息,这个时候就已经完成了开发分支的合并工作了,此时只需要根据开发分支去提测就行了😇😇

第四步:简单回滚操作

如果出现问题了怎么办,可以通过回滚操作来回退之前的版本,例如,我们新提交的这个分支有问题,我们需要回退到之前的版本怎么办,通过git reset命令来操作:

git reset "需要回退到哪个版本,这里填那个版本的commit ID"
git push -f origin dev

此时分支结构图如下:

此时dev分支已经回退到上一个版本了,可以通过对dev-0分支再次执行修改操作,然后再通过创建squash and merge请求合并到dev分支上。

结语

  • Git 的操作有很多,但是一定要注意团队开发内部需要统一规范操作,否则等到项目越来越大的时候,维护会变得越来越困难。
  • 多人合作开发的时候,要养成定期git fetch的习惯,并且每隔一段时间合并一次代码,而不是开发完成后再合并,避免冲突爆炸。
文章来自个人专栏
Git
1 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
1
0