2012-12-05 181 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说 –

相关问题