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 |