git - 'git merge' 和 'git rebase' 有什么区别?

标签 git merge git-merge rebase git-rebase

git mergegit rebase 有什么区别?

最佳答案

假设最初有 3 个提交,ABC:

A-B-C

然后开发人员 Dan 创建了提交 D,开发人员 Ed 创建了提交 E:

A-B-C-D-E

显然,应该以某种方式解决此冲突。为此,有两种方法:

merge :

A-B-C-D-E-M

提交 DE 仍然在这里,但是我们创建 merge 提交 M 继承了 DE。然而,这会产生菱形形状,许多人对此感到非常困惑。

重置:

A-B-C-D-E-R

我们创建提交 R,其实际文件内容与上面的 merge 提交 M 相同。但是,我们摆脱了提交 E,就像它从未存在过一样(用点 - 消失线表示)。由于这种删除,E 对于开发人员 Ed 来说应该是本地的,并且永远不会被推送到任何其他存储库。 rebase 的优点是避免了菱形形状,并且历史保持漂亮的直线 - 大多数开发人员都喜欢这样!

关于git - 'git merge' 和 'git rebase' 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16666089/

相关文章:

git - `git merge origin master` 和 `git merge origin/master` 之间有什么区别吗?

git - 通过deploy.cmd 文件部署azure Web 应用程序时,Grunt 安装失败

git - 在 cvsimport 之后告诉 git 两个用户是等价的

python - 在 Python 中合并重叠区间

django - 在 Django fork 上维护南迁移

android - 使用 git 进行可复制的 Android 构建,并进行快进 merge

Git 删除 git 日志中的原点/分支

c++ - 跨 git 提交调试可执行文件

c - 归并排序功能

由于移动文件导致 git merge 冲突