您现在的位置是:首页 >其他 >git rebase的理解网站首页其他
git rebase的理解
- 首先看下图 比如提价了三次,都是同一个文件的修改,有三次commit的信息 想把提交的版本信息变的好看一点,或者变成一次提交信息
// 这个表示要查看提交的三个版本并进行合并
git rebase -i HEAD~~~
// 如何要合并多个版本
git rebase -i HEAD~4 // 表示合并四个版本
![(https://img-blog.csdnimg.cn/0b42da152f144cdcadaa554257813a9a.png#pic_center)
pick 表示使用这次提交 我们想把4,3 的提交记录压缩到2中
可以通过s 表示压缩
通过Shift + I 编辑(Mac)
:wq 保存
可以看到将 2 ,3 都压缩到了4这个commit
git merge和get rebase
以文字叙述:
我们以master为主分枝,然后各自通过柱分枝建立了自己的分支,feature1 ,feature2, feature1的任务完成之后 提交到了feature1 ,
然后另外一个同学在feature2上开发了自己的任务测试之后没问题,并且合并到master分枝上了。
然后我切换到主主分枝master 然后gei pull 拉去了最新的代码 ,
然后有一些情况比如你们改了同一个文件,然后你的还在你的feature1上,你的feature1功能没开发,并没有合并,你现在需要拉取主分枝上最新的代码,然后同步到你的feature1上,在进行修改和开发
我们之前的操作是通过get merge 来合并主分枝。如果有冲突,解决冲突之后会产生一个新的commit
我们现在的操作办法是 先切回自己的feature1分制上 ,然后通过get rebase master 意思就是把我们现在的这个feature1分支从新变基到我们的最新的master分支上
如果有冲突 解决完冲突 在执行get add. git rebase --continue 这样不会产生额外的commit信息。
开发完feature1之后 最后要把这个功能同步到master上面去 ,首先切换到master
然后执行 get rebse feature1 这样就同步了最新的feature1的代码
git pull和git pull --rebase区别:git pull做了两个操作分别是‘获取’和合并。所以加了rebase就是以rebase的方式进行合并分支,默认为merge。