1、拣选合并
拣选合并可以拣选分支上1个或多个提交进行合并,并保留原分支的提交注释信息。
合并前:
A---B---C top
/
D---E---F---G---H master
把top分支上的B和C拣选合并到master分支上
1、切换到master分支
gitcheckout master
2、拣选合并 B和C
git cherry-pick B C(B和C之间用空格隔开)
3、合并结束后看log
LogID即哈希值改变,注释信息不变
合并后:
A---B---C top
/
D---E---F---G---H---B'---C' master
注:合并产生conflict,解决了conflict,用 git add conflict文件,然后用git commit不带注释可保留原提交注释。
2、压合合并
压合合并可以将分支上1个或多个提交压合成1个提交进行合并,不保留了原分支的注释信息,如果原分支的几个提交都是解决同一个问题,这时候可以用压合合并,把几个提交压合成一个提交,写新的注释信息。
A---B---C top
/
D---E---F---G---H master
把top分支上的B和C压合合并到master分支上
1、切换到master分支
gitcheckout master
2、压合合并 B和C
git merge --squash B C (B和C之间用空格隔开)
3、把合并过来的修改提交到master分支上
git commit -m " 注释 "
4、合并结束后看log
新增一条提交,注释是新的注释
合并后:
A---B---C top
/
D---E---F---G---H---BC' master
注:两个分支通过 git merge --squash ,只能把 A 或者 AB 或者 ABC 合并到master 上, 不能实现 BC 到 master上
git merge --squash 后面如果跟着哈希值,不管跟几个哈希值,不管哈希值的顺序,合并从分叉后的以第一个哈希值到后面跟着的最后一个哈希值之间的修改
注:合并产生conflict,解决了conflict,用 git add conflict文件
3、分支合并
合并前:
A---B---C top
/
D---E---F---G---H master
把top分支合并到master分支上
1、切换到master分支
gitcheckout master
2、合并top分支
git merge top
3、合并结束后看log
top上的提交增加到master上,并新增一条合并信息。
合并后:
A-----B----C top
/ \
D---E---F---G---H---I master