关于Git的合并与重写功能

90 阅读1分钟

每个人心中都有一个问题,那就是在合并和重设数据库之间该如何选择?
这篇可能会帮助你得到这样的答案

  • 关于git rebase,首先要了解的是,它解决的问题与git merge相同。
  • 这两个命令都是为了将一个分支的改动整合到另一个分支--只是它们的方式非常不同。

想想看,当你开始在一个专门的分支里做一个新功能,然后另一个团队成员用新的提交更新了主分支,这就造成了历史。
现在,我们假设主干中的新提交与你正在开发的功能相关。要把这些新提交纳入特性分支,你有两个选择:合并或重新发布。

合并选项

最简单的方法是将主干分支合并到特性分支中。

$git checkout feature
$git merge master
Or you can combine above commands
$git merge feature master

这将在特性分支中创建一个新的 "合并提交",把两个分支的历史联系起来。

重置选项

作为合并的替代方案,您可以将特性分支重新归入主干分支。

$git checkout feature
$git rebase master
  • 这样一来,整个特性分支就会从主干分支的顶端开始,有效地将所有新的提交都纳入主干分支中。但是,重设分支不是使用合并提交,而是通过为原始分支的每个提交创建全新的提交来重写项目历史。
  • 重新发布的主要好处是,你可以得到一个更干净的项目历史。首先,它消除了git merge所要求的不必要的合并提交。
  • 其次,重放的结果是项目历史是线性的。

让我们举个例子来更好地了解一下

假设我们有三个分支master、development和feature branch。
开始的三个分支现在都有一个提交
我们可以用 " $ git log -oneline " 在每个分支中检查提交的状态。

现在,我们将在主干分支上增加一个提交,方法是添加一个名为 main_branch.txt 的文本文件

在 develop 分支上再添加一个提交,添加一个名为 develop_branch.txt 的文本文件。

将 develop 与主分支合并,你可以看到之后每个分支的提交数量,develop 分支上会多出一个
的提交。

在 develop 分支上增加一个提交,即添加一个名为 feature_branch.txt 的文本文件。