Git进阶(一)——git rebase和merge区别
1.1 什么是分支
分支就是便于多人在同一项目中的协作开发。比方说:每个人开发不同的功能,在各自的分支开发过程中互不影响,完成后都提交到develop分支。极大的提高了开发的效率。
1.2 合并分支
每个人创建一个分支进行开发,当开发完成,需要合并到develop分支的时候,就需要用到合并的命令。
1.3 什么是冲突
合并的时候,有可能会产生冲突。
冲突的产生是因为在合并的时候,不同分支修改了相同的位置
所以在合并的时候git不知道哪个到底是你想保留的,所以就提出疑问(冲突提醒)让你自己手动选择想要保留的内容,从而解决冲突
例如:
div1分支下,对文件里边的内容进行修改

然后上传
git add .
git commit -m"div1进行提交"
git checkout master
git merge dev1
git push
上传成功之后,我们在切换到dev分支之下,我们可以看到 div 分支之下的文件当中并没有我们在dev
分支之下的文件当中写的内容,现在我们重写一个新的内容

同样进行上传,但是当我们在合并分支的时候却出现冲突

打开我们的文件

这说明我们产生了冲突,我们必须手动解决冲突,只需要我们保留我们想要的结果

git merge 和 git rebase 比较
- merge和rebase都是用来合并分支的
- 采用merge和rebase后,git log的区别,merge命令不会保留merge的分支的commit,rebase会保留所有的commit:
- 采用merge和rebase后,git log的区别,merge命令不会保留merge的分支的commit,rebase会保留所有的commit
- git rebase 让我们的提交记录更加清晰可读

rebase会把你当前分支的 commit 放到公共分支的最后面,所以叫变基。就好像你从公共分支又重新拉出来这个分支一样。

merge 会把公共分支和你当前的commit 合并在一起,形成一个新的 commit 提交

处理冲突的方式
- (一股脑)使用
merge 命令合并分支,解决完冲突(手动),执行git add . 和git commit -m'fix conflict' 。这个时候会产生一个commit。 - (交互式)使用rebase命令合并分支,解决完冲突(手动),
git add . 和git rebase --continue' 。,不会产生额外的commit。这样的好处是,‘干净’,分支上不会有无意义的解决分支的commit;坏处,如果合并的分支中存在多个commit,需要重复处理多次冲突。
|