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