一、把别的分支的commit顺序迁移到当前分支(重建基线),线性化提交历史
1、命令示意:
git rebase dev // 把dev的commit应用到自己(feat-add-columns)的前面
2、执行过程
1》找到当前分支和dev分支各自的最新提交c1和c2;然后从c1和c2开始向前回溯,找到它们在提交历史上的“共同祖先”c0;
2》把当前分支上从c0往后的每个提交记录和c0进行对比,并把对比结果存到临时文件里;
3》重置当前分支的提交历史,使它和dev分支的提交历史保持一致,即:原本只出现在dev分支上的提交记录c1,现在也出现在了当前分支上;
4》在这个基础上,然后再逐一追加只在当前分支上出现的提交记录,比如:c2,整个过程才算结束。
二、整理提交历史
1、命令示意
git rebase -i HEAD~n # 在commit编辑器里 删除、编辑、调整顺序
git push --force-with-lease origin dev # 强制推到remote的dev分支
git rebase --continue
三、把远端的更新同步到本地
# 获取远端分支的最新更新
git fetch origin
# 切换到本地分支
git checkout dev
# 执行 rebase 操作
git rebase origin/dev
# 如果有冲突,解决冲突后继续 rebase
# 解决冲突
# git add conflicted-file
# 继续 rebase
# git rebase --continue
# 强制推送更改到远端仓库
git push --force-with-lease origin dev