我有没有删除我的github提交历史记录?我不想丢失所有提交,只是最后10个左右被推送到github。我似乎无法弄清楚如何做到这一点。
答案 0 :(得分:62)
只需选择要返回的哈希并在克隆中执行:
git reset --hard hash#
git push -f origin branch
其中branch
是您要推送的分支的名称。瞧。小心推力。您可能希望复制工作目录,直到您熟悉它为止。
答案 1 :(得分:4)
如果您想这样做,可以使用HEAD~10
git reset --hard HEAD~10
git push -f origin master
建议不要删除服务器提交历史记录,尤其是:如果您有一组人在处理此存储库。
如果你有一个团队的人正在研究这个问题,我建议你回过头来添加一个撤消你不想要的代码的提交。
答案 2 :(得分:1)
我已将所有我的文件上传到我的第一个github项目,包括一些带有密钥的设置文件。在添加.gitignore
文件之前,我必须返回并删除所有已包含的版本,并从项目的缓存中删除所有设置文件。
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,并更新您可能意外上传的所有敏感数据。
答案 3 :(得分:0)
安装Git后,您还可以右键单击您的存储库文件夹 - Git GUI Here 。
选择存储库 - 可视化所有分支历史记录。
右键单击所需的提交 - 将主分支历史重置为此处。
现在你有3个选择:
选择后,选择文件 - 重新加载。
在GitHub Desktop的提交中选择还原后管理以解决此问题,然后再次还原,以便我们回到原始代码,然后只是希望清理这些成对的Revert提交。