最基本的 Git rebase解决分支合并 常用操作

时间:2024-03-19 16:38:07

前言

Git是当前最好的版本控制软件,本文基于Android端当前项目分支管理,不一定适用于所有人和所有项目,可以进行了解以及在这基础上改造,来实现对自己项目的管理和控制

为什么要进行版本控制

当前开发,都是多人同时操作,对于同一部分文件和文件需要同步操作和处理,为了规避冲突进行分布式操作,再讲分布式操作进行合并,解决冲突后合到一起,整合所有人的迭代功能

了解git 中rebase与merge的区别

Rebase 顾名思义,Re - base  ,重新以某一个分支为起点基准,此操作会先保存本分支变更的commit

再将Re-base <master> 中更新的内容添加到自己分支后,再将保存的变更commit挨个续到新更新内容后面

Merge 是合并commit ,分支搓揉合在一起 

Rebase可以看作,单线程按优先级同步添加commit ,有次序性

Merge 多线程,更关心合并后的结果

最基本的 Git rebase解决分支合并 常用操作

 

 

常规操作

  1. 从master切出修复问题分支(一帆风顺,如若单人开发)

git stash 如果有需要缓存本地数据到暂存堆栈,执行该命令,需要时再git stash pop弹出内容

git checkout master    //切换到主分支

git checkout -b bugFix  //从主分支切出一个新分支 bugFix,完全对标主分支

....   //代码操作 修复一系列bug

git commit -m "修复bug" //提交修复bug操作

git push --set-upstream origin bugFix  //将本分支推到远程名为bugFix分支

git stash pop    // 从暂存堆栈弹出之前临时写的内容

最基本的 Git rebase解决分支合并 常用操作

 

master 本地  o/master 本地的远程备份  master远程

git fetch  //同步master远程到本地远程备份 o/master

git pull --rebase  // 以rebase 方式,将本地远程备份 o/master 内容 合并到本地 master

 

案例中忽略了add 操作,每次commit前自行添加

2. rebase master操作(双线程,并行开发)

远程master 有其他commit ,本地master需要同步这部分内容到自己的分支,但当前自己分支无需合并到master

git fetch     // 远程master   -->  本地远程备份o/master

git pull --rebase // 本地远程备份o/master -->  本地master

git checkout bugFix //切换到自己的bug分支

git rebase master  //重新以本地master为基准同步commit(实际操作merge或者rebase都是以本地与本地进行合并的,实际上git 远程操作是外挂功能,无协同工作,不用也没事,电脑损坏除外)

...   

while(Conflict) { //出现冲突解决冲突  

git status   //查看冲突日志

... //解决冲突

git add .    //添加解决处理到git

git rebase --continue //继续下一个commit rebase

}

...

git push -f   //rebase master如果之前有远程分支,需要强制性冲掉远程代码,由于rebase变更了commit的正常次序,你的远程分支和你的本地分支基因序列已经不一样的

 

 

 

最基本的 Git rebase解决分支合并 常用操作

基于远程 clone了一个分支

最基本的 Git rebase解决分支合并 常用操作

git commit 进行了多次提交 完成了foo功能,但foo并未测试通过

发现master远程存在其他commit 已经合并到master,bug修复,foo也需要修复

git fetch ,同步本地master后

最基本的 Git rebase解决分支合并 常用操作

git rebase master  //基于foo rebase 本地master

最基本的 Git rebase解决分支合并 常用操作

 

结束语

才疏学浅,敬请见谅! 

这里只介绍了,使用git 最基本的操作常用命令,主要以rebase 方式,进行分支操作和合并(在merge前先rebase),不一定适用所有项目,切记切记!

 

资源

github开源练手项目 https://learngitbranching.js.org/?locale=zh_CN

git学习网站  廖雪峰Git学习