Git:将多个提交合并为一个提交
Git: Combining multiple commits into a single commit
我正在处理 git 存储库,其中我没有任何合并写入。有大量要求至少需要 1-3 周才能完成。我从 master 那里取出一个分支并在其中进行更改。在这段时间里,我在一天结束时生成了多个提交,并确保我的代码被推送到远程分支。
分支代码的多次提交看起来不太好,所以按照下面的 link 使用 rebase 命令将它们压缩为一次提交。
https://blog.carbonfive.com/2017/08/28/always-squash-and-rebase-your-git-commits/
这似乎不是一个很好的选择,因为这个过程很长,而且也有可能出错。
我的问题是,我还有其他选择吗?
一次推送多个提交并没有错。有时您可能正在处理一系列任务,并且只需要在任务完成后才提交所有内容。其他情况将要求您进行多次本地提交,并且仅在连接到服务器后才推送每个提交。
您可以将所有提交压缩为一个,也可以将每个提交合并到 master 分支。
两种方法都对,没有对错之分。由你选择你喜欢的。
另一种可能的行动方案,在某些情况下比交互式变基更简单且更不容易出错,是仅撤消提交并为整个批次重新提交一次.我也觉得比较快。
让我们假设这个示例树有 2 个分支,master
和 complex-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
包含从 D
到 K
的所有更改的总和。
然而,正如其他人所指出的,多个小的提交不是问题,将太多的东西组合在一起也会产生令人讨厌的副作用。请务必与您的同事讨论并适应您的工作流程。
您可以在编辑之前将您的分支软重置为特定提交,这样您就可以在一次提交中提交所有编辑。
正如其他人指出的那样,多次提交并不是坏事——但一系列杂乱无章的提交可能是坏事。
您可以使用交互式变基通过结合重新排序、合并和拆分来更改提交,直到生成的顺序有意义。
我发现在推送到共享存储库之前,这对本地分支机构来说几乎是强制性的。
请确保仅在未共享的分支上执行此操作。
我正在处理 git 存储库,其中我没有任何合并写入。有大量要求至少需要 1-3 周才能完成。我从 master 那里取出一个分支并在其中进行更改。在这段时间里,我在一天结束时生成了多个提交,并确保我的代码被推送到远程分支。
分支代码的多次提交看起来不太好,所以按照下面的 link 使用 rebase 命令将它们压缩为一次提交。
https://blog.carbonfive.com/2017/08/28/always-squash-and-rebase-your-git-commits/
这似乎不是一个很好的选择,因为这个过程很长,而且也有可能出错。
我的问题是,我还有其他选择吗?
一次推送多个提交并没有错。有时您可能正在处理一系列任务,并且只需要在任务完成后才提交所有内容。其他情况将要求您进行多次本地提交,并且仅在连接到服务器后才推送每个提交。
您可以将所有提交压缩为一个,也可以将每个提交合并到 master 分支。
两种方法都对,没有对错之分。由你选择你喜欢的。
另一种可能的行动方案,在某些情况下比交互式变基更简单且更不容易出错,是仅撤消提交并为整个批次重新提交一次.我也觉得比较快。
让我们假设这个示例树有 2 个分支,master
和 complex-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
包含从 D
到 K
的所有更改的总和。
然而,正如其他人所指出的,多个小的提交不是问题,将太多的东西组合在一起也会产生令人讨厌的副作用。请务必与您的同事讨论并适应您的工作流程。
您可以在编辑之前将您的分支软重置为特定提交,这样您就可以在一次提交中提交所有编辑。
正如其他人指出的那样,多次提交并不是坏事——但一系列杂乱无章的提交可能是坏事。
您可以使用交互式变基通过结合重新排序、合并和拆分来更改提交,直到生成的顺序有意义。
我发现在推送到共享存储库之前,这对本地分支机构来说几乎是强制性的。
请确保仅在未共享的分支上执行此操作。