Git Merge:合并来自其他分支的更改

Git 通过让我们创建分支来提供强大的工具。当我们的分支完成后,我们经常希望将它合并回我们的mainormaster分支 – 或者甚至可能将它完全合并到另一个分支中。与 git 合并很简单。在本指南中,我们将介绍该merge命令。

合并你的 git 分支#

合并非常简单。假设您在您的main分支上,并且您想要合并一个名为my-branch. 您所要做的就是运行以下命令:

git merge my-branch

为了可视化这一点,请看下图。在这里,main分支以绿色显示。在我们执行合并之前,我们处于标记为 的提交上main commit。之后,merge创建一个标记为 的新合并提交new merge commit。这意味着每当您进行合并时,也会进行一次提交:新功能分支主要提交新的合并提交测试分支

执行合并

如前所述,您将希望使用git merge将另一个分支合并到您当前的分支中。但是,在执行此操作之前,您必须在当前分支上提交所有内容。因此,首先,请确保签出要合并某些内容的分支:

git checkout main

然后在您的分支上添加并提交任何文件:

git add -A
git commit -m "Some merge message"

最后,您已准备好将某些内容合并到您的分支中:

git merge my-branch

### 快进合并

由于分支在这里发散,因此只进行了一次新的提交。但是,如果分支没有发散,那么就会提交所谓的“快进”合并。这是将该功能的整个提交历史复制到main分支的地方。例如,如果我们有一个main分支,我们创建了一个分支,然后更改了该分支,而不是main,则将创建一个快进合并。

这意味着我们的提交历史将如下所示:测试分支

您可以使用以下命令避免快进合并--no-ff

git merge --no-ff my-branch

还有一些其他ff选择:

  • --ff– 默认值 – 将在可能的情况下进行快进。
  • --ff-only– 只有在可以快进的情况下才会合并。否则什么都不会发生。

解决合并冲突

合并代码有时会导致合并冲突。这是当您尝试合并代码时 Git 无法自动确定应该发生什么的时候。在这些情况下,您必须先手动解决合并,然后才能完成它。如果你认为你现在不能解决它,你可以通过运行退出合并git merge --abort

您可以在此处了解有关合并冲突和解决它们的更多信息

设置合并提交消息

正如我所提到的,合并也会在你的 git 历史中创建一个新的提交。如果要添加自定义消息,可以像使用该-m标志一样使用git commit

git merge my-branch -m "Some commit message"

### 防止自动提交

有时,一条合并消息是不够的——你想将你的代码合并到一个分支中,稍微改变一下,然后完成你的提交。您可以使用以下命令合并分支而不创建提交--no-commit

git merge --no-comit my-branch

之后,您可以对代码进行任何更改,然后在闲暇时进行新的提交:

git add -A 
git commit -m "New commit message"

结论#

在本指南中,我们介绍了您在合并时需要了解的主要主题。在 git 中,合并代码是与他人协作和管理分支的重要主题。如果您遇到合并冲突,您可以在此处阅读相关内容。否则,请在此处查看更多 git 内容