GIT是最流行的代码版本控制系统。这一系列文章引入了一些高级使用方法,以帮助我们更好地利用Git的能力。本系列中有8篇文章,这是第5个。原始:rebase vs. Merge:整合GIT的变化[1 [1这是给予的
大多数开发人员了解在GIT中使用分支机构的重要性。实际上,该系列已经有一篇有关GIT分支策略的文章,解释了GIT强大的分支模型,不同类型的分支机构以及两个最常见的分支分支。Flow.lof.lofe.all总而言之,在独立容器(即分支)中工作是非常有用,也是使用版本控制系统的主要原因之一。
在本文中,我们将研究如何设置分支机构,如何将新代码添加回现有的开发行?有不同的方法可以实现这一目标。在此“ Git Advanced”系列的第五部分中,我们必须讨论集成GIT的变化,即合并和恢复。
在我们深入了解细节之前,重要的是要了解这两个命令,并且解决了相同的问题,并且一个git分支的更改已集成到另一个分支中,但是该方法略有不同。。
Git Advanced系列:
要了解将一个分支合并到另一个分支的合并,您可以使用命令。支持有一些新提交,现在我们想将此分支合并到另一个分支中。对于此,您可以这样输入:
通过这种方式,GIT将在当前的工作分支(在本示例中)中创建新的合并提交,连接两个分支的历史记录。在完成此任务以完成此任务中,GIT需要找到三个提交:
结合这三个提交,我们可以执行所需的集成。
不可否认,这是一个简化的场景。自建立以来,这两个分支中的两个没有任何新提交,这在大多数软件项目中不太可能。因此,在此示例中,其最后一次提交也是一个共同的祖先。
在这种情况下,集成非常简单。git可以将所有新提交添加到公共祖先。在git中,此最简单的集成表格称为“快进”合并,然后两个分支机构共享完全相同的历史记录(并且没有其他“合并提交”)。
但是,在大多数情况下,这两个分支将以不同的提交前进。LET给出一个更现实的例子:
为了集成,GIT必须创建一个包含所有更改的新提交,并注意分支机构之间的差异。这就是我们所说的合并提交。
人工提交和合并提交通常由人创建。它是一个有意义的单位,仅包含相关更改以及有意义的提交信息,包括上下文和注释。
现在,合并提交有些不同。它不是由开发人员创建的,而是由Git自动创建的。此外,合并提交不一定包括“相关更改”。instead,其目的是连接两个(或更多)分支。
如果您想知道此自动合并操作,则必须检查所有分支的历史记录及其各自的提交历史记录。
在讨论rebase之前,让重新集成在讨论重生之前,让我们清楚地表明:rebase不是比合并更好或更糟,只是不同。您只需要将集成的分支结合起来完成工作,甚至不需要考虑rebase。rebase正在做,理解其优势和缺点确实非常有帮助。也许您会在某个项目中遇到一个问题,而rebase完全有帮助...
好的,让我们开始!请记住刚才提到的自动合并提交?有些人不太喜欢它,而不是使用它。其他像项目历史的开发人员看起来像一条直线,没有任何迹象表明它被分为多个。即使已经集成了这些分支,分支也在某个点上。这基本上是GIT重现过程中发生的事情。
步骤 - 顺序rebase使我们能够逐渐引入rebase操作。
我们想将更改集成到中间,但是这次是与rebase一起使用而不是合并。实际的git命令非常简单:
与命令类似,您只需要告诉git要集成哪个分支。LET来看一下幕后的故事...
在第一步中,git“删除”了公共祖先提交后分支机构的所有提交。不要担心,不会被丢弃,并且可以被视为暂时保存在安全的地方。
在第二步中,Git的应用程序来自新提交。这次,两个分支机构暂时看起来完全相同。
最后,整合了这些“临时存款”提交的提交(来自分支机构的顶部,它们是重新考虑的。
因此,该项目的历史似乎是在直线上开发的,并且没有包含所有合并和更改的合并提交,并且保留了原始提交结构。
Rebase的潜在隐藏危险要了解Git Rebase还有另一件事,它重写了提交的历史。查看最后一张图表并提交星号。尽管相同的内容与它实际上是一个不同的提交方式。
提交只有少量重要属性,例如作者,日期,变更和父亲提交。如果更改了任何信息,它将创建一个新提交。有一个新的SHA-1哈希ID。
对于尚未发布的提交,重写历史记录并不是问题。但是,如果重写是远程代码库的提交,它可能会遇到麻烦。也许他人的工作是基于该库的工作。最初的C3,现在突然不存在...
为了远离麻烦,在这里有一个简单的规则:例如,切勿在公共分支机构上使用rebase,例如,它已将其推向远程代码库提交!相反,只有在将其集成到共享团队之前分支,它用于清理本地提交历史记录。
整合就是一切!最终分析中,合并和折叠是有用的GIT策略,取决于想要实现的目标。Combining是无损的,因为合并不会改变现有的历史记录。另一方面,rebase可以帮助清理历史记录通过避免不必要的合并,请记住不要在公共分支机构中这样做以避免干扰其他开发人员。
如果您想了解有关高级GIT工具的更多信息,则可以免费检查“高级git套件[3]”:这是一个简短的视频集合,例如分支策略,交互式折叠,反式倒流,提交和其他主题。
参考:[1] rebase vs.合并:集成git中的更改:https://css-tricks.com/rebase-vs-merge-changes-in-git/
你好,我是你的粉丝。我已经在摩托罗拉完成了研发。现在,我已经在Mavenir完成了技术工作,并且我一直对沟通,网络,后端建筑,Yunyan,DevOps,CICD,CICD,Blockchain,AI和其他技术保持着浓厚的兴趣。我通常喜欢阅读和思考,我相信持续的学习和成长,欢迎一起交流和学习。Wechat公共帐户:DeepNomind