官网文档 Git-分支合并
已经清晰地描述了合并的原理。
https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6
合并前:
合并后:
记录三种指针的原理
工作区有三种指针:head,remotes\origin,logs\HEAD
1.head(指向各个分支上的最后一个提交)用于指向本地分支;如图1
2.remotes\origin用于存储fetch下来的分支,如图2
3.logs\HEAD用于记录所做过的提交,切换过分支也会被记录,如图3
【图1】head
【图2】remotes\origin
两个从master切出来的分支master-01,master-02,都分别有提交,但是未推送。这里的remotes\origin\master指向的commitId相同。
【图3】logs\HEAD
是否存在相同分支切出来的分支修改互相影响的问题?答:不存在
如果A分支是基于master切出来的,并且不push到远程,在master上进行修commit或者reset之后,会不会影响A分支?
结论:不会。
实验:
当前master上的commitId:19359dd
此时,head会新增A文件,并且保存了19359dd
在A上提交commitId:598cca,发现master保存的commitId没变
在master上进行reset ,reset到b6a4c9f
观察到:A没有被master影响