Git:将多个提交合并为单个提交

Git:将多个提交合并为单个提交,git,commit,rebase,squash,Git,Commit,Rebase,Squash,我正在一个git存储库上工作,在那里我没有任何合并写入。有大量需求,需要至少1-3周才能完成。我从大师那里拿出一根树枝,在上面做我的改变。在此期间,我在一天结束时生成多个提交,并确保我的代码被推送到远程分支 分支代码上的多个提交看起来不太好,所以按照下面的链接使用rebase命令将它们压缩为一个提交 这似乎不是一个很好的选择,因为过程很长,也有可能出错 我的问题是,我还有其他选择吗 一次推送多个提交没有错。有时,您可能正在处理一系列任务,并且仅在任务完成后才需要提交所有内容。另一种情况需要您执行

我正在一个git存储库上工作,在那里我没有任何合并写入。有大量需求,需要至少1-3周才能完成。我从大师那里拿出一根树枝,在上面做我的改变。在此期间,我在一天结束时生成多个提交,并确保我的代码被推送到远程分支


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

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


我的问题是,我还有其他选择吗

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

您可以将所有提交挤压到一个分支,也可以将每个提交合并到主分支


这两种方法都是对的,没有对错之分。由您选择您喜欢哪一个。

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

您可以将所有提交挤压到一个分支,也可以将每个提交合并到主分支


这两种方法都是对的,没有对错之分。这取决于您选择您喜欢哪一个。

另一种可能的做法,在某些情况下比交互式重基更简单、更不容易出错,就是撤销提交,然后在整个批次中只重新提交一次。我也觉得更快

让我们假设这个示例树有两个分支,主功能和复杂功能

之后,这棵树会像这样:

A-<-B-<-C <<< master
     \
      L <<< complex-feature
…其中提交L包含从D到K的所有更改的总和


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

另一种可能的做法,在某些情况下比交互式重新基准更简单、更不容易出错,就是撤销提交,并在整个批次中只重新提交一次。我也觉得更快

让我们假设这个示例树有两个分支,主功能和复杂功能

之后,这棵树会像这样:

A-<-B-<-C <<< master
     \
      L <<< complex-feature
…其中提交L包含从D到K的所有更改的总和


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

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

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

其他人已经注意到,多次提交并不是一件坏事,但一系列无组织的提交可能是坏事

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

我发现在被推送到共享存储库之前,本地分支几乎必须这样做


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

正如其他人所指出的,多次提交并不是一件坏事,但一系列无组织的提交可能是一件坏事

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

我发现在被推送到共享存储库之前,本地分支几乎必须这样做


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

请告诉我们为什么这是一个漫长的过程。你在想什么样的错误。谢谢。分支代码上的多次提交看起来不太好。强烈反对。“许多小的、可以理解的提交比一个大的提交要好。@Williampersell取决于提交的性质。我已经审查了15个以上提交的请求,其中一半以上正在处理中,推送更新的代码,删除控制台日志,在一个PR中删除其中的多个,等等。小提交可能很好,但当您试图查找特定的提交时,它们也会产生噪音,在某些情况下,最好用表单“正在进行的工作”的消息来解决提交问题,这并不是因为提交太小。这是因为提交消息是无用的。请告诉我们为什么这是一个漫长的过程。和
你在想什么样的错误。谢谢。分支代码上的多次提交看起来不太好。强烈反对。“许多小的、可以理解的提交比一个大的提交要好。@Williampersell取决于提交的性质。我已经审查了15个以上提交的请求,其中一半以上正在处理中,推送更新的代码,删除控制台日志,在一个PR中删除其中的多个,等等。小提交可能很好,但当您试图查找特定的提交时,它们也会产生噪音,在某些情况下,最好用表单“正在进行的工作”的消息来解决提交问题,这并不是因为提交太小。这是因为提交消息是无用的。伟大的解释!很好的解释!
A-<-B-<-C <<< master
     \
      L <<< complex-feature