git常见场景解决(1)

133 阅读2分钟

场景1:合并最新3次commit记录到倒数第三次:

解决:

s1: 运行git rebase -i HEAD~3, 将后两次pick改为squash,保存关闭该文本

image.png

s2: 输入合并的commit记录注释,保存关闭该文本

image.png  

场景2:修改某次commit注释:

解决:

s1: 运行git rebase -i HEAD~2(假设要修改向前第2次,后面的数字要等于2),将第二次pick改为reword,保存关闭该文本

image.png  

s2: 修改对应commit注释(此处为第一行),保存关闭该文本

image.png  

场景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记录会更简洁直观。

  image.png

优势:feature1开发完成后会删除feature1分支,该分支的commit记录会被全部删除。此时只有dev一条主线。