如何在 Git 中压缩提交在 Git 中“挤压”意味着将多个提交合并为一个。您可以在任何时间点执行此操作(通过使用 Git 的“交互式变基”功能),尽管它通常在合并分支时完成。 请注意,没有独立 什么时候压缩你的提交如前所述,“压缩”您的提交的行为意味着您将多个现有提交合并为一个。如果你应该这样做或避免这样做 - 在某种程度上 - 一个偏好问题:例如,在某些团队中,压缩提交是将功能分支合并回长期运行的分支(如“master”或“主要的'。 但是你为什么要这样做呢?让我们以功能开发的经典案例为例:您可能已经在一个单独的功能分支上工作过,并在此上下文中生成了许多提交。根据你工作的复杂性和持续时间,它甚至可能是相当多的提交。在某些时候,您会希望将您的工作合并回主分支。钍通常是当您决定是否进行壁球时:
一些团队看到了使用 (a) 和使用 squash 的可能优势:与可能不必要且可能压倒性的许多单独提交不同,主要提交历史记录中只出现一个提交。这有助于保持秩序井然! 但是,您不能说 (a) 或 (b) 是“正确”的做事方式。这两种方法各有利弊,所以这主要是一个偏好和惯例的问题。 如何压制你的提交压缩提交有不同的方法和工具。在这篇文章中,我们将讨论交互式 Rebase和Merge作为压缩提交的两种主要方式。 交互式变基您可以随时使用 Git 的“交互式变基”功能手动压缩您的提交。深入了解 Interactive Rebase 超出了本文的范围(请查看First Aid Kit for Git以获取有关此主题的一系列免费短视频),但我们将一起浏览一个简单的示例案例。 假设您已经完成了新功能分支的工作(在下面的示例中为“功能/登录”),现在想要将其合并回“主”分支。但在此之前,您需要清理新提交并将其压缩为一个: 我们可以通过启动一个交互式 Rebase 会话来做到这一点: $ git rebase -i HEAD~3 然后将打开一个编辑器窗口,您可以在其中选择要如何操作提交历史的选定部分。请记住,交互式 Rebase 允许对您的提交历史执行许多不同的操作;然而,对于我们这里的示例案例,我们对 'squash' 动作关键字感兴趣。如果您将一行或多行标记为“squash”,它们将与上述行合并: 在为新的组合提交输入提交消息后,Interactive Rebase 完成 - 三个旧提交已被压缩为一个。 小费在 Tower 中使用交互式变基如果您使用的是Tower Git 客户端,使用 Interactive Rebase 压缩某些提交非常简单:只需选择要合并的提交,右键单击其中任何一个,然后从上下文菜单。 合并合并分支时,挤压也是一种选择:
效果与我们之前讨论过的非常相似:所有更改都将像普通合并一样合并 - 但是通过使用该 最后,这使您可以避免通常由于合并而发生的自动提交。看起来好像您的功能的工作只发生在一次提交中。 |
|