Git:将多个提交组合到一个提交中

问题描述 投票:1回答:4

我正在开发一个git存储库,我没有任何合并写入。有大量要求需要至少1-3周才能完成。我从主人那里拿出一个分支,然后对其进行修改。在此期间,我在一天结束时生成多个提交,并确保我的代码被推送到远程分支。

分支代码上的多次提交看起来不太好,所以按照下面的链接使用rebase命令将它们压缩到一个提交中。

https://blog.carbonfive.com/2017/08/28/always-squash-and-rebase-your-git-commits/

这似乎不是一个很好的选择,因为这个过程很长,也有可能出现错误。

我的问题是,我可以遵循其他任何选择吗?

git commit rebase squash
4个回答
1
投票

在某些情况下,另一种可能的操作过程,比某些上下文中的交互式rebase更简单且更不容易出错,只是撤消提交并为整个批次重新提交一次。我也发现它更快。

让我们假设这个示例树有2个分支,mastercomplex-feature

A-<-B-<-C <<< master
     \
      D-<-E-<-F-<-G-<-H-<-I-<-J-<-K <<< complex-feature

在合并这长长的提交列表(D,E,F,G,H,I,J,K)之前,您可以执行以下操作:

git checkout complex-feature
git reset --soft B
git commit -m "Global message for commits D through K"

之后树会看起来像这样:

A-<-B-<-C <<< master
     \
      L <<< complex-feature

...其中,提交L包含从DK的所有更改的总和。

然而,正如其他人所指出的,多个小提交不是问题,将太多东西组合在一起也会产生令人讨厌的副作用。务必与您的同事讨论并适应您的工作流程。


1
投票

一次推送多个提交没有错。有时您可能正在处理一系列任务,并且只有在任务完成后才需要提交所有任务。其他情况需要您执行多个本地提交,并且只有在连接到服务器后才推送每个提交。

您可以将所有提交压缩为一个或将每个提交合并到主分支。

这两种方法都是正确的,没有正确或错误的方法。您可以选择自己喜欢的那个。


1
投票

您可以在编辑之前将分支轻轻地重置为特定提交,这样您就可以在一次提交中提交所有编辑。


0
投票

正如其他人所指出的那样,多次提交并不是一件坏事 - 但是一系列无序的提交都可以。

您可以使用交互式rebase通过组合重新排序,组合和拆分来更改提交,直到生成的顺序有意义。

在推送到共享存储库之前,我发现这对于本地分支几乎是必需的。

请确保仅在未共享的分支上执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.