【发布时间】:2011-10-26 07:05:27
【问题描述】:
无论如何我可以删除我的 github 提交历史记录吗?我不想丢失我所有的提交,只是最后 10 个左右被推送到 github。我似乎无法弄清楚如何做到这一点。
【问题讨论】:
-
参见stackoverflow.com/questions/495345/… 请注意,如果有其他人在同一个存储库上协作,那么做这种事情是个坏主意。通常最好克服历史的坎坷,继续前进。
无论如何我可以删除我的 github 提交历史记录吗?我不想丢失我所有的提交,只是最后 10 个左右被推送到 github。我似乎无法弄清楚如何做到这一点。
【问题讨论】:
安装 Git 后,您还可以右键单击您的存储库文件夹 - Git GUI Here。
选择存储库 - 可视化所有分支历史。
右键单击所需的提交 - 将主分支历史重置到此处。
现在您有 3 个选项:
选择后,选择文件 - 重新加载。
在GitHub Desktop 中选择 Revert on a commit 后设法解决了这个问题,然后再次 Revert 以便我们回到原始代码,然后只是希望清理这两个 Revert 提交。
【讨论】:
如果你想这样做,你可以使用HEAD~10
git reset --hard HEAD~10
git push -f origin master
不建议删除服务器提交历史记录,尤其是:如果您有一个团队正在处理此 repo。
如果您有一个团队致力于此,我建议您通过添加另一个撤消您不想要的代码的提交来回退。
【讨论】:
只需选择您想要返回的哈希并在您的克隆中执行:
git reset --hard hash#
git push -f origin branch
其中branch 是您要推送的分支的名称。瞧。小心用力推动。您可能需要复制您的工作目录,直到您熟悉它为止。
【讨论】:
我已将我的所有文件上传到我的第一个 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,并更新您可能不小心上传的所有敏感数据。
【讨论】: