【Git】git reabse 实战演练

背景:新分支dev,然后其他同事上传master代码,多以master领先dev一个版本,

使用merge会污染commit记录,想要保持一份干净的commit,git rebase就派上用场了

 

 

【Git】git reabse 实战演练_第1张图片

如图,我们在主干master上拉去新的dev分支开发,另外一个团队在主干上修复新的BUG

存在问题:

dev分支是有bug的,直接merge会污染commit(两条线)

解决方案:

我们要进行rebase操作,就是要保证dev版本在最新的mater上开发

也就是要保证commit 123是最新的提交

 

流程如下:

0git  commit                 // 提交当前代码 123

1git  checkout  master       // 切换分支到主干

2git  pull                   // 拉取最新的代码到本地仓库(主干代码commit ABC

3git  checkout  branchA      // 切换回dev分支

4git  reabse master          // 进行变基操作 这时候会保证当前代码提交操作123 ABC           

5git  check  master          // 切换回master分支 

6git  rebase branchA         // 把当主干分支同步dev

7git  push                   // 完活推向仓库

 

 

模拟一下操作

第一步,初始化本次仓库,添加文件0.txt

git init

git add 0.txt

git commit

【Git】git reabse 实战演练_第2张图片

 

第二步,基于当前master 分支新建dev分支,check out 到dev,并且添加文件123.txt 

git branch dev

git checkout dev

git add 123.txt

git commit

git log

【Git】git reabse 实战演练_第3张图片

 

看提交日志,这时候dev分支,在master的基础上添加提交了123,这时候已经完成左侧部分操作。

 

【Git】git reabse 实战演练_第4张图片

 

第三步,切换master分支,master添加 ABC.txt

git checkout master

git add ABC.txt

git commit

git log

 

【Git】git reabse 实战演练_第5张图片

 

此时dev       提交记录为 0.txt  -> 123.txt

此时master  提交记录为 0.txt  -> ABC.txt

 

第四步,重点来了,开始变基!!!

git checkout dev

git rebase master

git log

【Git】git reabse 实战演练_第6张图片

 

 

第五步,进行主干代码合并

git checkout master

git reabse dev

git log

【Git】git reabse 实战演练_第7张图片

 

此时dev        提交记录为 0.txt  -> ABC.txt   ->  123.txt

此时master   提交记录为 0.txt  -> ABC.txt  ->  123.txt

 

 

【Git】git reabse 实战演练_第8张图片   

                                           (图A)

【Git】git reabse 实战演练_第9张图片

                                           (图B)

问题得到解决,成功由图A转换到图B,现在dev就可以在无bug版本上继续开发啦!

 

 

 

tag:我是一个现学现卖的程序员

 

 

你可能感兴趣的:(【Git】git reabse 实战演练)