场景1:合并最新3次commit记录到倒数第三次:
解决:
s1: 运行git rebase -i HEAD~3, 将后两次pick改为squash,保存关闭该文本
s2: 输入合并的commit记录注释,保存关闭该文本
场景2:修改某次commit注释:
解决:
s1: 运行git rebase -i HEAD~2(假设要修改向前第2次,后面的数字要等于2),将第二次pick改为reword,保存关闭该文本
s2: 修改对应commit注释(此处为第一行),保存关闭该文本
场景3:在feature1分支上开发一半,接到了紧急需求,需要切回dev分支上修改。
解决:
操作1:git merge
1.将当前开发代码commit&push到远端,切回dev分支。
2.在dev分支上修改代码完成,并commit&push到远端,切回feature1分支。
3.在feature1分支上开发完成,并commit&push到远端,切回dev分支。
4.在dev分支上执行git merge feature1,可能发现冲突,在编辑器中处理冲突,并commit。
5.所有冲突解决完成后,push所有代码。
存在问题:多个分支会带来复杂commit记录,比较混乱,无法快速准确查询某个commit记录。
操作2: git rebase
1.将当前开发代码commit&push到远端,切回dev分支。
2.在dev分支上修改代码完成,并commit&push到远端,切回feature1分支。
3.在feature1分支上开发完成,并commit&push到远端。
4.在feature1分支上执行git rebase dev,可能发现冲突,在编辑器中处理冲突,并commit。
5.所有冲突解决完成后,push所有代码。
6.切回dev分支,执行git merge feature1。
7.待删除feature1分支后,git记录会更简洁直观。
优势:feature1开发完成后会删除feature1分支,该分支的commit记录会被全部删除。此时只有dev一条主线。