2011-08-13 221 views
31

无论如何删除我的github提交历史吗?我不想失去所有的提交,只是最后10个被推送给github的提交。我似乎无法弄清楚如何做到这一点。删除Github提交历史记录

+4

请参阅http://stackoverflow.com/questions/495345/git-removing-selected-commits-from-repository请注意,如果有其他人在同一个存储库上进行协作,则做这种事情是一个坏主意。克服历史上的颠簸并向前推进通常会更好。 –

+0

伟大的链接。谢谢! –

回答

62

只需选择你想回去,并在你的克隆哈希做:

git reset --hard hash# 
git push -f origin branch 

其中branch是要推动分支的名称。瞧。小心推动力量。你可能想复制你的工作目录,直到你熟悉它为止。

+1

工作就像一个魅力!除了我没有意识到该分支意味着我的分支名称:P –

+1

你如何找到哈希#? –

+1

我使用tig查看我的哈希历史记录以找到我想要返回的哈希历史记录。您也可以使用gitk或git日志或其他工具,如源代码树。存在多种选项来检查历史记录并找到散列表 – matthewdaniel

5

如果你想做到这一点,你可以用HEAD~10

git reset --hard HEAD~10 

git push -f origin master 

不建议做删除服务器提交历史,尤其是:如果你有一个团队的人对这个回购工作。

如果你有一队人在这方面的工作,我会建议通过增加另一个承诺是撤消你的代码,你不想回落。

2

我上传了所有我的文件到我的第一个github项目,包括一些设置文件与秘密密钥。我必须回去并删除在添加我的.gitignore文件之前包含的所有版本,并从项目的缓存中删除所有设置文件。

How I did this

gedit ./.git/logs/HEAD

找到 '新的根' 要删除之前所有的40个字符的SHA哈希。将其复制到剪贴板并关闭它。 (您可能会也可能不会使用gedit,这是Linux的默认文本编辑器)。

$> gedit ./.git/info/grafts

粘贴在这里SHA。转到您的项目目录。

$> cd ../..

$> git filter-branch

强制推到主,否则会阻止您尝试删除你的历史。

$> git push --force -u origin master

删除您grafts文件。

$> rm ./.git/info/grafts

没关系

嗯,我的回答是只成功了一半。我的公共活动RSS提要仍然链接到所有详细说明我想删除的信息的差异。显然,there is no way to delete this,但你应该阅读Change your Password,并更新任何可能意外上传的敏感数据。

+1

我只是想补充一点,因为我今天遇到了它,这是由于我为自己创建的非常不寻常的情况。但是,一旦您完成[删除敏感数据](http://help.github.com/remove-sensitive-data/)步骤,您就可以执行一个解决方案,即创建一个新存储库并推送所有_now clean_提交,并删除旧的存储库。这会使您在公共活动饲料中的旧分支/差异链接失效,并且由于回购不再存在,github将抛出404。 –

0

随着Git安装,您还可以右键单击您的存储库文件夹 - Git GUI Here

选择存储库 - 可视化所有分支历史记录

右键单击所需的提交 - 将主分支历史记录重置为此处

现在你有3种选择:

Git

一旦选定,选择文件 - 刷新

如果在GitHub Desktop的提交中选择了Revert,然后再次恢复,以便我们回到原始代码,然后只是希望清理这些对Revert提交,我们可以设法解决这个问题。

相关问题