rebase
假设远程有dev分支,我们在dev分支基础上新建立了一个分支mydev;
-
我们在mydev上更新了代码与此同时有人将代码更新到dev上
// 自己的更新 git add . git commit -m '更新1' git add . git commit -m '更新2'
// 此时dev上在我们拉取mydev后多了一下两次提交 2021-12-14 'xiaoxiaomi' '更新A' 2021-12-14 'liyuanyuan' '更新B'
-
此时,我们想将mydev上的代码合并到dev上(使用rebase)
-
[1]切换到dev分支,拉取代码
- git checkout dev
- git pull
-
[2]切换到mydev分支,进行代码变基
- git checkout mydev
- git rebase dev(将dev的变更变基到mydev)
-
[3]切换到dev分支将mydev代码合并过来
- git checkout dev
- git merge mydev
- git push
-
此时在git上的记录就是
- 更新A、更新B、更新1、更新2 ,一个有序的记录
- 将自己的提交记录放在dev记录的后面,有序
-
若是产生冲突-使用git status 或者到vscode发现有冲突的文件-解决冲突
// 解决完冲突 git add -u git rebase --continue
# [1]若是没有冲突直接变基完成 # [2]若是有冲突,会直接停止,解决完执行git rebase --continue命令继续才会出现第下一个版本冲突,直到所有冲突解决; // git merge是一下显示所有的冲突;
-
若是产生冲突解决到一半想退出,执行命令
git rebase --abort
-
rebase与merge的区别
- [1]显示冲突
- git rebase在产生冲突的时候,显示第一个提交版本的冲突,解决完第一个提交版本冲突,执行git rebase --continue再显示后面的冲突;
- git merge一次显示所有的冲突;
- [2]解决冲突
- git rebase解决完冲突仅需要 git add ,不需要git commit;
- git merge在解决完冲突后需要commit;