https://segmentfault.com/a/1190000005937408

    https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA

    https://www.zhihu.com/question/36509119

    image.png
    相信對於rebase肯定不會陌生,就好像上圖描述的過程一樣,當你使用rebase命令的時候,即好像將你需要去rebase的分支拔下來然後重新插到另一個分支上

    使用rebase並不是簡單地好像你用ctrl-x/ctrl-v進行剪下複製一樣,rebase會依次地將你所要操作的分支的所有提交應用到目標分支上。
    image.png

    https://juejin.cn/post/6895246702614806542

    HEAD是Git中非常重要的一个概念,你可以称它为指针或者引用,它可以指向任意一个节点,并且指向的节点始终为当前工作目录,换句话说就是当前工作目录(也就是你所看到的代码)就是HEAD指向的节点。

    1. 在满意之前不要推送你的工作
    2. Git 的基本原则之一是,
    3. 由于克隆中有很多工作是本地的,因此你可以 在本地 随便重写历史记录。
    4. 然而一旦推送了你的工作,那就完全是另一回事了,除非你有充分的理由进行更改,否则应该将推送的工作视为最终结果。
    5. 简而言之,在对它感到满意并准备与他人分享之前,应当避免推送你的工作。

    先看merge,官方文档给的说明是:
    git-merge - Join two or more development histories together
    用merge代表了topic分支与master分支交汇,并解决了所有合并冲突。然而merge的缺点是引入了一次不必要的history join。
    **
    保留了commit 的时间的信息
    image.png
    rebase是另一个选项。rebase的含义是改变当前分支branch out的位置。这个时候进行rebase其实意味着,将topic分支branch out的位置从E改为G,如图:

    base 的含义是基于 , rebase 重新基于
    image.png

    rebase 操作的实质是 丢弃一些现有的提交 ,然后相应地新建一些内容一样但实际上不同的提交

    关于git .ignore
    https://segmentfault.com/q/1010000000430426
    https://www.jianshu.com/p/e5b13480479b

    参考资料
    Git 版本管理 #9 分支冲突 (rebase) (教学 教程 tutorial)
    https://www.youtube.com/watch?v=fLvr4BRoJ8I
    7.6 Git 工具 - 重写历史
    https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E5%86%99%E5%8E%86%E5%8F%B2
    不想git更新代码时产生merge记录,可以使用git rebase命令:
    https://blog.csdn.net/NUAA_Hunter/article/details/78201368
    Git - 使用 rebase 命令保持主分支树的整洁
    https://juejin.im/entry/597086845188252645572ebd
    git merge和git rebase的区别, 切记:永远用rebase
    https://zhuanlan.zhihu.com/p/75499871
    在开发过程中使用git rebase还是git merge,优缺点分别是什么?https://www.zhihu.com/question/36509119/answer/67828312