1.head和master指针
    https://www.cnblogs.com/mouseleo/p/11918015.html
    head指针其实是一个指向分支指针的指针。

    1. 分支指针:如master,或者你自己创建的新分支。<br /> 分支指针只会指向最新一次的commit
    2. 当你用head指针指向一个历史版本的时候,这是head指针就处于游离的状态,因为head 针只指向分支指针。要改变游离状态,可以在此历史版本上创建一个新的分支。

    2.rebase的讲解
    https://blog.csdn.net/weixin_42310154/article/details/119004977
    rebase的版本作为基版本,通俗的讲:现在有A、B两个版本,我现在处于A版本上,我执行git pull -rebase B, 就是把B版本作为以前的版本,而我所处的A版本,是在B版本上进行改造的。我所处的版本是最新版本!
    存在问题:如果A版本是5月1号的版本,B是5月3号的版本,我在A版本上执行git pull -rebase B, 则B作为了基版本,而A是在B上开发的,这显然与时间顺序不一致。

    3.git merge合并原则
    如有两个分支master和dev,在master上执行git merge dev,则master上没有而dev上有的文件会合并过来,master上有的dev上没有的文件会保留下来。
    两个分支同名文件有改动的话,会产生冲突,要手动合并。但是如果在某个文件的头部或者尾部添加了代码,这种情况不会冲突。