在命令行中使用 Git Rebase

本文将讨论有效地使用 git rebase 命令。 git rebase 命令允许我们更改一系列提交并修改我们存储库中的提交历史记录。

我们可以使用 git rebase 命令编辑、重新排序或压缩提交。


在命令行中使用 git rebase

以下是一些常见的使用选项。

  1. 我们可以编辑以前的提交消息。
  2. 我们可以将两个或多个提交合并为一个。
  3. 我们可以还原或删除存储库中不必要的提交。

变基时,我们可以针对分支或存储库中的某个时间点进行变基。

要针对分支进行变基,我们运行:

$ git rebase --interactive <branch_name>

为了对某个时间点进行变基,我们运行:

$ git rebase --interacive HEAD~

我们可以添加 HEAD~7 来变基到第七次提交。

让我们看看变基时可用的命令。

  • pick – 我们用它来重新排序我们的提交历史。
  • reword – 当我们想要更改提交消息时使用它。 它不会影响提交引入的更改。
  • edit – 当我们想要编辑或修改提交时使用它。 我们可以将提交拆分为更小的提交或删除提交引入的错误。
  • squash – 我们使用它将两个提交合并为一个,并让我们有机会为新提交提供新消息。
  • fixup – 它与 squash 相同,除了它丢弃合并提交的消息并使用它上面的消息。

我们现在将尝试在示例中使用上述选项。 在此示例中,我们将根据 Delftscopetech 存储库中的某个时间点进行变基。

我们将变基 HEAD~7。 运行下面命令:

$ git rebase --interactive HEAD~7

文本编辑器显示以下输出。

在命令行中使用 Git Rebase

我们的提交是从最旧到最新排列的。

在我们的文本编辑器中,我们将:

  1. 使用 squash 将提交 (fa39187) 压缩为提交 (1fc6c95)。
  2. 将最后一次提交 (7b36971) 移到提交 (6b2481b) 之前,并将其保留为 pick。
  3. 将提交 (c619268) 合并到提交 (6b2481b) 中,并使用修复丢弃提交消息。
  4. 使用编辑拆分 (dd1475d)。
  5. 使用 reword 修复提交消息 (4ca2acc)。

我们将修改文本编辑器中的命令,如下所示。

在命令行中使用 Git Rebase

我们可以保存并关闭文本编辑器,Git 将启动 rebase。

Git 将跳过 pick 1fc6c95 并打开一个编辑器,因为 squash 需要我们的一些输入。 它应该看起来像这样。

在命令行中使用 Git Rebase

如果对更改感到满意,您可以关闭编辑器并继续变基。 接下来的三个命令不需要我们的输入,但编辑需要并将以下消息打印到终端。

在命令行中使用 Git Rebase

此时,我们可以进行任何更改并使用 git commit –amend 命令创建一个新的提交。 完成后,我们可以通过运行 git rebase –continue 命令继续。

始终在进行更改后运行 git rebase –continue 。 如果您忘记运行命令并继续编码,则以后无法变基。

但是,您可以通过以下方式补救:

  1. 运行 git reset --soft HEAD^ 命令到 HEAD ref 到父级。
  2. 运行 git rebase --continue 以完成变基。

您还可以通过运行 git rebase –abort 命令来中止变基并重做该过程。 这将需要您再次解决合并冲突。

改写部分将需要我们的输入,Git 将使用以下信息打开文本编辑器。

在命令行中使用 Git Rebase

我们可以更改文本,保存文件并完成变基。

简而言之,git rebase 命令允许我们根据提交更改存储库的状态。 我们可以压缩、重命名或重新排序提交。

在 rebase 时合并冲突时要注意。