详解gitmergppt修改模板
e与gitreba的区别
前⾔
其实这个问题困扰我有⼀段时间,相信也有⼈和我⼀样有这个困扰,⽹上已有很多这种解释了,但是要么就是⽆图,要么就是解释的很乱,没太看懂,经过⾃⼰对git的使⽤,加上向同事请教,算是理解了这个问题,所以写下来分享⼀下,我尽量详细说明merge与reba的区别
假设我们有如下图⼀所⽰仓库,该仓库有master和develop两个分⽀,且develop是在(3. file)commit处从master拉出来的分⽀。
merge
假设现在HEAD在(6. file)处,也就是在master分⽀最近的⼀次提交处,此时执⾏git merge develop, 结果如下图所⽰。
⼯作原理就是:git 会⾃动根据两个分⽀的共同祖先即 (3. file)这个 commit 金狗
和两个分⽀的最新提交即 (6. file) 和 (5. file) 进⾏⼀个三⽅合并,然后将合并中修
改的内容⽣成⼀个新的 commit,即图⼆的(7.Merge branch ‘develop')360浏览器截图
。
这是merge的效果,简单来说就合并两个分⽀并⽣成⼀个新的提交。
reba
那reba是老年养生保健知识
这么⼯作的呢?
假设初始状态也是图⼀所显⽰的。两个分⽀⼀个master,⼀个develop,此时HEAD在(6. file)处,现在执⾏git reba develop,结果如下图三所⽰。
可以看见develop分⽀分出来分叉不见了,下⾯来解释⼀下它的⼯作原理:
在执⾏git reba develop之前,HEAD在(6. file)处,当执⾏reba操作时,git 会从两个分⽀的共同祖先(3. file)开始提取当前分⽀(此时是master分⽀)上的修改,即(6. file)这个commit,再将 master 分⽀apple单词
指向⽬标分⽀的最新提交(此时是develop分⽀)即(5. file)处,然后将刚刚提取的修改应⽤到这个最新提交后⾯。如果提取的修改有多个,那git将依次应⽤到最新的提交后⾯,如下两图所⽰,图四为初始状态,图五为执⾏reba后的状态。
简单来说,git reba提取操作有点像git cherry-pick⼀样,执⾏r源氏超级跳
eba后依次将当前的提交cherry-pick到⽬标分⽀上,然后将在原始分⽀上恐龙有多大
的已提取的commit删除。
merge OR reba
那什么时候⽤merge,什么时候⽤reba呢?
再举个例⼦:
初始状态如下图六所⽰:
和之前⼀样的是,develop分⽀也是在 (3. file)处从master分⽀拉取develo蒙古族奶茶
p分⽀。不⼀样的是两个分⽀各个commit的时间不同,之前develop分⽀的4和5commit在master分⽀3之后6之前,现在是develop分⽀的4提交早于master分⽀的5提交,develop分⽀的6提交晚于master的5提交早于master的7提交。
在上图情况下,在master分⽀的7commit处,执⾏git merge develop,结果如下图七所⽰:
执⾏git reba develop,结果如下图⼋所⽰:
1. 可以看出merge结果能够体现出时间线,但是reba会打乱时间线。
2. ⽽reba看起来简洁,但是merge看起来不太简洁。
3. 最终结果是都把代码合起来了,所以具体怎么使⽤这两个命令看项⽬需要。
还有⼀点说明的是,在项⽬中经常使⽤git pull来拉取代码,git pull相当于是git fetch + git merge,如果此时运⾏git pull -r,也就是git pull –reba,相当于git fetch + git reba
最后推荐⼀些git可视化⼯具,我⽤的是gitkraken,这些⼯具功能基本⼀样,看个⼈喜欢好使⽤
到此这篇关于详解git merge 与 git reba的区别的⽂章就介绍到这了一年级下册数学题
,更多相关git merge与git reba内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!