所以我從svn(code.google.com)遷移到git(github)。如何重新初始化所有提交
我已經導入我的項目從SVN回購,並導入所有提交歷史一路走來。 我對這些評論並不感到自豪,因爲這是我的第一個項目,不是很認真。
我想將所有內容重新組合爲一個「初始導入」提交。
我把我的計算機上的所有東西都拉出來了,我正在努力做到這一點。但我發現的全部是: git rebase -i master
但它只是重新設置新的修改和提交。
我怎樣才能清理我的github從所有的歷史與基地資料庫?
所以我從svn(code.google.com)遷移到git(github)。如何重新初始化所有提交
我已經導入我的項目從SVN回購,並導入所有提交歷史一路走來。 我對這些評論並不感到自豪,因爲這是我的第一個項目,不是很認真。
我想將所有內容重新組合爲一個「初始導入」提交。
我把我的計算機上的所有東西都拉出來了,我正在努力做到這一點。但我發現的全部是: git rebase -i master
但它只是重新設置新的修改和提交。
我怎樣才能清理我的github從所有的歷史與基地資料庫?
你可以變基和壁球一切,如果你想(除了初始提交),但何必呢?簡單地刪除你的.git目錄,運行git init
來重新創建它,git add
所有東西,和git commit
做一個新的初始提交。
如果你想降低您所有的歷史,一個單一的「初始導入」承諾,只需刪除.git
目錄,並創建一個新的本地存儲庫(保持舊的備份)。 git init . && git add . && git commit -m "Initial import"
。
這樣的新存儲庫與您推送到GitHub的存儲庫不會有共同的祖先,因此您必須git push --force
您的新創建的存儲庫。
查找的哈希承諾,你要開始說abcd12
擠壓,然後變基針對哈希明確。
git rebase -i abcd12
您正在使用master
變基對,它可以對主分支的尖端變基。
它用於歷史記錄,但每個文件旁邊的消息仍顯示之前的提交消息。 – 2011-12-22 15:35:15
你真的擠壓了檔案嗎?它提供了一個選項來創建一個新的提交消息。 – Abizern 2011-12-22 15:47:25
是的,我做了一切,但第一次提交。我已經刪除了所有提交消息。我在github歷史上看到它確定,但不是單個文件。也許這是來自github的緩存問題。無論如何,謝謝,我已經結束了初始化一個新的回購。 – 2011-12-22 15:49:00
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
更改初始提交指向您的回購的當前狀態。
git rebase -i --root
將從頭開始所有提交的互動變基。
從那裏,你能夠壓制所有提交到一個和/或執行其他編輯。
實際上 - 對於只捆綁一個提交,你是一個更好的答案。我會離開我的,只是爲了表明你可以指定一個提交來啓動rebasing。 – Abizern 2011-12-22 15:25:57
是的,我結束了這個解決方案。謝謝大家。 – 2011-12-22 15:44:41