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

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

 

 

【Git】git reabse 实战演练

如图,我们在主干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 实战演练

 

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

git branch dev

git checkout dev

git add 123.txt

git commit

git log

【Git】git reabse 实战演练

【Git】git reabse 实战演练

 

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

 

【Git】git reabse 实战演练

 

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

git checkout master

git add ABC.txt

git commit

git log

 

【Git】git reabse 实战演练

 

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

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

 

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

git checkout dev

git rebase master

git log

【Git】git reabse 实战演练

 

 

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

git checkout master

git reabse dev

git log

【Git】git reabse 实战演练

 

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

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

 

 

【Git】git reabse 实战演练   

                                           (图A)

【Git】git reabse 实战演练

                                           (图B)

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

 

 

 

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

 

 

相关文章:

  • 2021-05-26
  • 2021-06-18
  • 2021-09-09
  • 2021-07-19
  • 2021-09-02
  • 2021-08-20
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-08-25
  • 2021-10-19
  • 2021-11-12
  • 2022-12-23
  • 2019-07-27
  • 2021-06-14
  • 2021-12-26
相关资源
相似解决方案