git命令merge和rebase、revert和reset

Git merge和git rebase都是将两个分支合并的命令,但它们执行的方式和合并的结果有所不同。

Git merge会将当前分支和要合并的分支的最新提交点之间的差异合并成一个新的提交点,并创建一个新的合并提交。这个合并提交包含了两个分支的历史,但是会保留每个分支的独立提交记录。

Git rebase则是将当前分支上的所有提交点都移动到要合并的分支的顶部,再将两个分支合并成一个新的提交点。这个新的提交点包含了两个分支的历史,并且看起来像是一个线性的提交记录,而不是两个分支的交错提交记录。

因此,Git merge可以保留分支的历史记录,但会增加一个新的合并提交。而Git rebase则会使提交记录更加线性,但可能会丢失分支的独立历史记录。所以,选择哪种方式要根据具体情况来决定。

总结:

  • 融合代码到公共分支的时使用git merge,而不用git rebase

  • 融合代码到个人分支的时候使用git rebase,可以不污染分支的提交记录,形成简洁的线性提交历史记录。

 

即:跨分支的合并使用merge,同分支的合并使用rebase。

例如:

  1. 小明和小红各自从master拉分支,小明的分支A,小红的分支B,小明想合并小红的分支,这就属于跨分支合并,使用merge
  2. 小明从master拉个分支A,小红也想在小明的分支A上开发,那么小红每次提交代码前适合使用rebase合并小明的代码。

参考文献:https://joyohub.com/2020/04/06/git-rebase/

 ——————————————————————————————————————————————————————————

Git 命令 reset 和 revert 都可以撤销 Git 提交,但是它们的实现方式和作用范围不同。

reset 命令可以回退到某一个提交,使得该提交及其之后的所有提交都被丢弃。reset 命令会删除这些提交,因此不建议在公共分支上使用 reset 命令,以免对其他人的工作造成影响。相反,reset 命令适用于在本地分支上撤销一些修改,或在私有分支上进行实验。

revert 命令可以在不删除任何提交的情况下撤销某一个提交。revert 命令会创建一个新的提交,该提交包含回退操作的反向修改,以撤销之前的提交。这样做不会改变 Git 仓库的历史记录,因此适用于公共分支上的工作回退。

一般来说,如果想要回退到旧的提交并丢弃旧的提交之后的所有修改,可以使用 reset 命令,而如果想要在不删除提交的情况下回退工作,可以使用 revert 命令。

总之,使用 reset 和 revert 命令需要小心谨慎,因为这些操作可能会对 Git 仓库的历史记录造成影响。建议在进行这些操作之前备份重要的工作。

 

posted on 2023-08-11 15:56  HHHuskie  阅读(164)  评论(0编辑  收藏  举报

导航