如何优雅的进行GIT分支管理

前言

来到了一家新公司,发现git管理很混乱,故写一篇如何优雅的使用GIT进行分支管理文档.
本文档不会教你命令都什么作用,只会教你如何优雅使用git命令来进行版本控制,故请对git命令有一定熟悉的再看.

首先要明确分支
这里以基础的dev,sit,uat,pro分支为例
dev:开发分支
sit :测试分支
uat:近生产分支
pro:生产分支
这四个分支合并代码是单向的,dev->sit->uat->pro,不能逆着合并代码.
以下例子都是以每个环境都只有一套为例

merge命令的糟糕之处

不要使用merge命令,不要直接使用pull命令!!!
为什么不能直接使用merge命令.
废话不说,上图
在这里插入图片描述
在这里插入图片描述
第一种为使用rebase合并的代码,第二种为使用merge合并的代码.
举几个例子:
如果想把代码还原到之前的版本,还原rebase合并的代码,我想还原到任意版本都可以,使用Merge该如何还原
如果现在有dev,sit,pro三个分支,如果全部使用Merge,使用一段时间后就会发现三个分支代码完全不一样,版本控制异常艰难.

为什么不要直接使用pull:
不是说一定不能使用Pull命令,如果你当前分支代码本地没有commit,直接使用pull毫无问题,如果本地已经有新的commit,此时不要直接使用pull命令

拉取线上分支:

如何才能拉取线上分支:
方法一:
git fetch
git rebase origin/dev
方法二:
git pull --rebase origin dev
这两种方式都可以,pull命令后加–rebase就是要以rebase的方式拉取代码

rebase命令使用方式:

rebase命令如何使用:
git rebase origin/dev
若出现冲突
git status
解决冲突
git add .
git rebase --continue

合并分支:

如何将本地新建local分支合并至线上dev分支
git checkout dev
git pull origin dev 若dev分支无本地commit,才可直接拉取
git rebase local
解决冲突
git push origin dev

版本还原:

A需求先提测,B需求再提测,但是B需求先测试通过,要上生产怎么办,此时就需要进行代码还原(这里假设两个互不干扰的需求,因为如果两个互相干扰的需求同时提测的话,代码调换顺序是需要重新提测的)
在这里给出两个在代码还原时很好用的命令
git reset dppw2jww --hard
git cherry-pick xxasd

首先要先把两个需求的hash码记录下来
git log 
然后还原
git reset xxxxxxx0  --hard
然后将需调换顺序的代码一个个重新合并
git cherry-pick xxxxxxx1
git cherry-pick xxxxxxx2
最后在push就可以了
git push origin dev -f
最后请务必重新测试一下,不然可能会因为解决冲突的方式不一样导致代码变更

如何将代码多个commit合并成一个

开发一个大需求时,时间跨度大半个月左右,我们本地可能会有很多个commit,这时候想要push,但是发现commit的太多,不太好看怎么办

只需要一个命令 
git reset xxxxxxxxxx
不要加--hard,你就会神奇的发现,虽然节点还原了,但是代码并没有还原,此时只需要重新commit就可以了

若有多个需求要合并该怎么办,
凉拌,多个需求穿插着commit,这是人干的事?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值