2011-12-22 68 views
22

所以我從svn(code.google.com)遷移到git(github)。如何重新初始化所有提交

我已經導入我的項目從SVN回購,並導入所有提交歷史一路走來。 我對這些評論並不感到自豪,因爲這是我的第一個項目,不是很認真。

我想將所有內容重新組合爲一個「初始導入」提交。

我把我的計算機上的所有東西都拉出來了,我正在努力做到這一點。但我發現的全部是: git rebase -i master但它只是重新設置新的修改和提交。

我怎樣才能清理我的github從所有的歷史與基地資料庫?

回答

16

你可以變基和壁球一切,如果你想(除了初始提交),但何必呢?簡單地刪除你的.git目錄,運行git init來重新創建它,git add所有東西,和git commit做一個新的初始提交。

+0

實際上 - 對於只捆綁一個提交,你是一個更好的答案。我會離開我的,只是爲了表明你可以指定一個提交來啓動rebasing。 – Abizern 2011-12-22 15:25:57

+0

是的,我結束了這個解決方案。謝謝大家。 – 2011-12-22 15:44:41

2

如果你想降低您所有的歷史,一個單一的「初始導入」承諾,只需刪除.git目錄,並創建一個新的本地存儲庫(保持舊的備份)。 git init . && git add . && git commit -m "Initial import"

這樣的新存儲庫與您推送到GitHub的存儲庫不會有共同的祖先,因此您必須git push --force您的新創建的存儲庫。

5

查找的哈希承諾,你要開始說abcd12擠壓,然後變基針對哈希明確。

git rebase -i abcd12 

您正在使用master變基對,它可以對主分支的尖端變基。

+0

它用於歷史記錄,但每個文件旁邊的消息仍顯示之前的提交消息。 – 2011-12-22 15:35:15

+0

你真的擠壓了檔案嗎?它提供了一個選項來創建一個新的提交消息。 – Abizern 2011-12-22 15:47:25

+0

是的,我做了一切,但第一次提交。我已經刪除了所有提交消息。我在github歷史上看到它確定,但不是單個文件。也許這是來自github的緩存問題。無論如何,謝謝,我已經結束了初始化一個新的回購。 – 2011-12-22 15:49:00

9

Jefromi的回答會的工作,但如果你想保留現有回購的配置,甚至周圍留提交以防萬一,你可以做到以下幾點:

git checkout master

git branch backup可選留下另一支這裏如果你想保留你的歷史。

git reset --soft $SHA_OF_INIT_COMMIT這將更新什麼HEAD指向,但離開你的索引和工作目錄,在其當前狀態。你可以用git log --pretty=format:%h --reverse | head -n 1得到SHA,使這一個步驟git reset --soft $(git log --pretty=format:%h --reverse | head -n 1)

git commit --amend更改初始提交指向您的回購的當前狀態。

35

git rebase -i --root將從頭開始所有提交的互動變基。

從那裏,你能夠壓制所有提交到一個和/或執行其他編輯。