场景
基于临时分支开发的场景,假设临时分支是基于master创建的,在临时分支上开发完后,由于别的同事有提交合并到了master分支,此时master分支的提交记录已经领先于临时分支,于是需要将master分支领先的提交记录合并到临时分支,再做后续操作。
为什么?
以上场景,可以用merge进行解决,将master分支的改动merge到临时分支。
git checkout <临时分支>
git merge master
执行git log就会看到记录里有merge 的信息,这样其实污染了 commit 记录,想要一份干净的 commit记录,这时候,git rebase 就可以解决。
怎么用?
git checkout master
git pull
git checkout <临时分支>
git rebase master
冲突的解决
使用rebase合并分支时,也会出现conflict,这时,git 会停止 rebase 让你去解决冲突。
解决完冲突后,用 git add 命令去添加这些内容。
最后执行git rebase --continue,这样rebase 会继续合并余下的改动。
或者冲突后,想放弃这次rebase操作,可以通过--abort回到开始前状态:
git rebase --abort
撤销rebase操作
执行git reflog
找到rebase开始前的哈希码:
HEAD@{x}: rebase(start)这个节点的前一个哈希码,就是我们要的哈希码。
HEAD@{x+1}: 这个节点就是我们要的哈希码。
执行:
git reset --hard <rebase开始前的哈希码>