2013-04-16 98 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