📜  Git – 合并和变基的区别

📅  最后修改于: 2022-05-13 01:58:10.777000             🧑  作者: Mango

Git – 合并和变基的区别

Git rebase 和 git merge 都执行相同的任务,将功能分支合并到工作分支,但方式非常不同。在本文中,我们将讨论它们以及它们的优点和区别,以及它们的典型工作流程。

它在哪里使用?

考虑一种情况,您正在处理分支中的一个功能,而您的朋友正在处理另一个功能,并且你们俩都需要将更改合并到主存储库中。在这种情况下,您将需要使用 Git rebase 或 git merge 功能,但这非常适合您。让我们更深入地分析一下。上述情况的图示如下:

Git 合并

合并分支最简单的方法是使用 git merge 命令。 Git 合并保护两个存储库的历史记录。您可以使用以下合并命令来合并您的分支。移动到您的主目录,然后编写以下命令:

git checkout feature
git merge main

或者,你可以写

git merge feature main

它是如何工作的?

基本上,它创建了一个新的“功能提交”,保护了两个分支的历史并给它一个这样的结构:-

优势

合并命令是一个非破坏性命令。在此命令中,现有分支不会以任何方式更改,因此它涵盖了 Git Rebase 的所有缺陷或缺点。

坏处

除了简单之外,git merge 也有很多缺点。考虑一种情况,您必须定期在主分支上工作并且有一个非常活跃的主分支,在这种情况下提交历史将变得混乱,从而导致开发人员理解日志或提交历史的痛苦经历。

Git 变基

git merge 的替代方法是 git rebase 选项。在此,我们重新设置整个功能分支以将其与主分支合并。按照以下命令执行合并提交:-

git rebase main

它是如何工作的?

Git rebase 实际上是 rebase 功能分支并将其与主分支合并。简而言之,它将整个功能分支移动到主分支的尖端。图形表示看起来有点像这样:-

优势

使用 git rebase 的主要好处是它提供了更清晰的合并历史。与 git merge 不同,它线性工作,删除了不必要的合并提交。它使浏览日志历史记录和了解更改变得更加容易。

坏处

git rebase 最大的缺陷是你看不到上游的更改是什么时候进行的,并且它们被合并到了特性分支中。如果许多开发人员正在为此工作并且您对其进行了 rebase,那么 git 可能会认为上游所做的更改与他们之前所做的更改不同。

Git – 合并和变基的区别

Git Merge

Git Rebase

Git Merge merges two branches to create a “feature” branch.Git Rebase rebases the feature branch to add the feature branch to the main branch.
Git Merge is comparatively easy. Git Rebase is comparatively harder.
Git Merge safeguards history.Git Rabse doesn’t safeguard history.
Git Merge is more suitable for projects with the less active main branch.Git Rebase is suitable for projects with frequently active main branches.
Git Merge forms a chain-like structure.Git Rebase forms a linear structure.
Git Merge is preferable for large no. of people working on a project.Git Rebase is preferable for small groups of people.

Single line command is:

git merge feature main

Single line command is:

git rebase main