聊下git pull --rebase

简介: 有一种场景是经常发生的。 大家都基于develop拉出分支进行并行开发,这里的分支可能是多到数十个。然后彼此在进行自己的逻辑编写,时间可能需要几天或者几周。在这期间你可能需要时不时的需要pull下远程develop分支上的同事的提交。

有一种场景是经常发生的。

大家都基于develop拉出分支进行并行开发,这里的分支可能是多到数十个。然后彼此在进行自己的逻辑编写,时间可能需要几天或者几周。在这期间你可能需要时不时的需要pull下远程develop分支上的同事的提交。这是个好的习惯,这样下去就可以避免你在一个无用的代码上进行长期的开发,回头来看这些代码不是新的代码。甚至是会面临很多冲突需要解决,而这个时候你可能还需要对冲突的部分代码进行测试回归,这就很麻烦了。

那么我们来看一下你在pull时候需要习惯性的加上—rebase参数,这样可以避免很多问题。--rebase的本意是想让事情的发展看起来很连续和优美,而不是多出很多无用的merge commit 。

你在有些时候pull代码的时候会有这样的一个提示:

1

这个时候你是习惯性的,”esc :wq“,直接默认commit注释。然后你的commit log就多了一笔很不好看的log。

2

如果你不懂的在最后release的时候合并掉这些无意义的commit,最后你的release分支就会被你搞的很丑陋。(合并commit请参考:聊下git merge –squash)

这个问题的出现是正常的,我们来看下为什么会出现这个问题。正常情况下的分支commit路线:

3

当前develop分支上有三个commit。现在我们两个项目开始启动,需要分别拉出两个分支独立开发。

4

我们分别checkout –b 出来两个分支,独立开发互不干扰。正常情况下,如果这两个分支的改动都没有重贴或者冲突的时候,一切都很顺利的。(重贴是指可以被系统自动合并的修改,而冲突是需要你手动解决的。你要重现这个现象还是有点小麻烦的,你要修改刚好可以重贴的位置,而不是直接导致冲突的地方)

我在develop_newfeature_authorcheck里修改了点东西,push到develop。然后checkout 到develop_newfeature_apiwrapper。

git pull

这将会把develop_newfeature_authorcheck分支的修改直接拉下来于本地代码merge,且产生一个commit,也就是merge commit。

5

你可以使用 git pull –rebase 这样的结局就完全不一样。—rebase 并不会产生一个commit提交,而是会将你的E commit附加到D commit的结尾处。在看commit log时,不会多出你所不知道的commit出来。其实此处的F commmit是无意义的,它只是一个merge commit。而且这里面的message里面的branch日后也不存了,这些分支都会被清除掉。

git pull –rebase 会使commit看起来很自然。

6

因为代码都有一个前后依赖,只是这个依赖在开发的时候谁先谁后的问题。

 

作者:王清培

出处:http://www.cnblogs.com/wangiqngpei557/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面

目录
相关文章
|
2月前
|
开发工具 git
git merge和git rebase异同
git merge和git rebase异同
68 0
|
4月前
|
开发工具 git
Git分支管理--Bug分支
Git分支管理--Bug分支
26 0
|
4月前
|
前端开发 开发工具 git
git rebase 和 git merge的区别?以及你对它们的理解?
git rebase 和 git merge的区别?以及你对它们的理解?
68 1
|
7月前
|
开发工具 git
git:亲测体验rebase与merge
git:亲测体验rebase与merge
63 0
|
8月前
|
开发工具 git
git--分支管理
git--分支管理
|
10月前
|
安全 开发工具 git
在开发过程中使用git rebase还是git merge,优缺点分别是什么?
在开发过程中使用git rebase还是git merge,优缺点分别是什么?
249 0
|
开发工具 git
git 分支合并代码的四种方式
比如:功能分支位feat/village, 主分支是dev。我们要想将功能分支代码合并到主分支,那么我们首先就要切换到主分支。
5354 1
|
测试技术 持续交付 调度
Git 进阶系列 | 2. Git 中的分支策略
Git 进阶系列 | 2. Git 中的分支策略
126 0
Git 进阶系列 | 2. Git 中的分支策略
|
小程序 Java Linux
Git是什么?我们为啥需要Git?Git又是怎么生出来的?
Git是什么?我们为啥需要Git?Git又是怎么生出来的?
Git是什么?我们为啥需要Git?Git又是怎么生出来的?
|
安全 开发工具 git
如何理解git rebase?
如何理解git rebase?
如何理解git rebase?

相关实验场景

更多