变基
场景:dev分支从master分支切出来之后,二者都各自有一些提交,此时要把dev分支合并到master分支上。
使用merge
# dev分支上使用git merge
git merge master
merge之后,出现分叉的提交记录,如果有冲突,手动解决冲突,再执行add和commit
然后在master分支,执行merge,此时是一次快进式合并,master分支直接快进到dev-c3
# master分支上快进式合并
git checkout master
git merge dev
使用rebase
git rebase master
执行rebase之后,dev分支上的提交,会基于master的最新提交之后,这就被称为变基,可以保持线性的提交记录
如果存在冲突,手动解决冲突,然后执行
git add ./
git rebase --continue
# 取消变基
# git rebase --abort
然后在master分支,执行merge,此时是一次快进式合并,master分支直接快进到dev-c2
# master分支上快进式合并
git checkout master
git merge dev
合并多次提交
场景:对同一个功能commit了多次,想要合并这多次提交
使用如下命令:
git rebase -i HEAD~3
此时会出现交互式的窗口:
pick B Commit message B
pick C Commit message C
pick D Commit message D
pick E Commit message E
pick:保留提交reword:保留提交但修改提交信息edit:保留提交并允许你在提交时进行修改squash:将该提交与前一个提交合并,并将它们的提交信息合并fixup:类似于squash,但不保留该提交的提交信息drop:删除该提交
修改为:
pick B Commit message B
fixup C Commit message C
fixup D Commit message D
fixup E Commit message E
保存之后,多次提交就会被合并,提交记录就只会保留pick的那一次,如果想要修改提交信息,可以使用reword