2013-04-16 62 views
3

我有一个单独的分支git仓库,它有4000个提交。我想根据它们创建的日期对提交进行分组。例如,假设下面的提交:在Git中将几个提交合并为一个

abcd 2013-4-1 12:10 
abce 2013-4-1 13:27 
... 
cdef 2013-4-1 18:16 
cdeg 2013-4-2 09:23 
... 
gade 2013-4-2 18:20 
fdeg 2013-4-3 09:42 
... 

我想获得一个提交历史等所有abcd - cdef提交合并为一个承诺,所有CDEG - 盖德成一个等。我试图使用rebase作为

git reset --hard cdef 
git rebase -i abcd 

我无法设法压扁所有提交,得到以下错误消息。

"Cannot 'squash' without a previous commit" 

我试图压扁一个提交一次,它的工作,但它花了这么长时间,显然不可行。

如何根据创建日期合并提交?

回答

5

唛头从每一天都当作“改写”,其余为“修正”承诺:

reword xxxxxx First commit from 2013-04-01 
squash xxxxxx another commit from 2013-04-01 
squash xxxxxx another commit from 2013-04-01 
reword xxxxxx First commit from 2013-04-02 
etc 

这将提示你写的每一天新的提交信息。

请注意,在时间基础上做提交几乎总是错误事情要做。对于像git bisect这样的工具能够正常工作,存储库中的每个提交应该代表“一口大小”的更改。

+0

+1因为这个答案指出按日期分组提交是绝对不正确的事情。 – Christopher

+0

@duskwuff谢谢你的回复和警告。提交属于备份增量数据的自动服务,以便能够跟踪数据结构的变化。只有服务本身会更新并提交数据,在任何时候都会进行更新。没有其他分支机构,合作伙伴参与其中。问题在于,许多提交有时会导致在其他机器上执行“git pull”,并且存储库本身中的“git gc”会因内存不足而失效。这是否仍然是一个不好的选择? – hinoglu