[Golang修仙之路] Git:all-in-one

28 阅读1分钟

本文的知识都是参考网上的,仅供自己学习使用。

1. merge 和 rebase 的区别?

  • merge会创建一个新的合并节点。
  • rebase会将2个分支合并成一个,将新分支直接移到master分支的顶端。

image.png

参考:zhuanlan.zhihu.com/p/75499871

2. git reset 和 git revert 的区别?

假设提交历史是:

A -- B -- C -- D (HEAD)
  • 执行 git reset --hard B

    A -- B (HEAD)
    

    CD 被丢掉(除非通过 reflog 找回)。

  • 执行 git revert C

    A -- B -- C -- D -- E (HEAD)
    

    这里 E 是一个新提交,用来“抵消”C 的修改。C 依然存在历史里。