2012-12-05 202 views
160

我想刪除所有提交歷史,但保持代碼處於當前狀態。如何刪除github中的所有提交歷史記錄?

因爲在我的提交歷史中,有太多未使用的提交。

我該怎麼辦?

有沒有任何git命令可以做到這一點?

git filter-branch ? 
git rebase ? 
... 

我的代碼在github.com上的主機。

回答

529

刪除.git文件夾可能會導致您的git存儲庫出現問題。如果你想刪除所有提交的歷史,但保持代碼在當前狀態下,它是很安全的做如下所示:

  1. 結帳

    git checkout --orphan latest_branch

  2. 添加所有文件

    git add -A

  3. 提交更改

    git commit -am "commit message"

  4. 刪除分支

    git branch -D master

  5. 命名當前分支掌握

    git branch -m master

  6. 最後,力更新你的資料庫

    git push -f origin master

PS:這會不會讓你的舊提交歷史周圍

+0

我可以在此之後使用分叉存儲庫執行請求嗎? – rraallvv

+5

的確很棒。 :) 0.克隆:'git clone https:// github.com/blahblah/blahblah' :) – pidosaurus

+1

@rraallvv不,你會說:*沒有什麼可比較的,master和x分支有完全不同的提交歷史。當您強制推送時,Github上的拉取請求會自動關閉 – NoNameProvided

63

如果您確定要刪除所有提交歷史記錄,只需刪除項目根目錄下的.git目錄(請注意它已隱藏)。然後在同一文件夾初始化一個新的存儲庫,並將其鏈接到GitHub的庫:

git init 
git remote add origin [email protected]:user/repo 

現在提交您的當前版本的代碼

git add * 
git commit -am 'message' 

終於迫使更新到GitHub的:

git push -f origin master 

但是,我建議在執行這些步驟之前備份歷史記錄(存儲庫中的.git文件夾)!

+1

但如果我只是想保持最新的10犯? – Chinaxing

+0

在此之後,我可以使用分叉庫來執行請求嗎? – rraallvv

+1

這個作品,但它會保持歷史從樹上像以前的承諾@Desta Haileselassie Hagos說 –

相關問題