网站搜索

如何快进和更新 Git 分支


使用 Git 分支时,通常需要保留不同的分支,例如“开发”、“发布”或“暂存”分支。

使用 Git 分支时,通常需要保留不同的分支,例如“开发”、“发布”或“暂存”分支。使用 Git,可以轻松快速转发分支以使其与另一个分支保持同步,例如更新发布分支以包含暂存更改。

快进 Git 分支

在 Git 中,分支只是指向特定提交的指针,称为分支的 HEAD。分支只是一个标签,当分支用新的提交更新或与另一个分支合并时,该标签可以更改。

要将两个不同的分支合并在一起,可以使用 git merge。通常,这会创建一个合并两个分支历史记录的合并提交,例如通过拉取请求将功能分支的提交拉入主分支。

但是,如果两个分支具有相同的历史记录,Git 将执行特殊的快进合并。在上面的示例中,发布分支 HEAD 包含在开发历史记录中,这意味着不需要合并提交。相反,release 已更新为指向 develop。为此没有特殊的 git fast-forward 命令;与其他合并一样,这是一个简单的合并。合并时,您想要检查将接收更改的分支。在本例中,release 是正在更新的分支,因此我们检查release:

git checkout release

然后我们可以将开发分支合并到其中,这将执行快进:

git merge develop

如果您使用 Git GUI 客户端,此过程可能会更直观。大多数客户都可以选择右键单击过时的分支,并将其更新为您正在处理的分支。

快速转发远程分支

需要注意的一件事是快进只会更新您的本地存储库。您需要推送到 Github 来更新遥控器。如果您使用的是 GUI 客户端,您可能会看到远程存储库的标签在您推送之前已过期。

快进分支不会创建提交,但它仍然应该触发 CI/CD 管道,例如 Github Actions。如果没有,可以选择始终创建合并提交:

git merge --no-ff

在某些情况下,这对于维护更明确的分支拓扑也很有用,其中功能分支始终与主分支分开,并在组合时创建合并提交。默认情况下,如果您在合并功能时没有更改主分支上的任何内容,Git 将快进主分支,而不是创建您可能期望的通常合并提交。 --no-ff 标志将阻止这种行为。

或者,如果您想尝试快进,但在需要合并提交时会失败,则可以使用 --ff-only 标志。

相关文章: