首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从git历史记录中删除提交(永远)

从git历史记录中删除提交(永远)
EN

Stack Overflow用户
提问于 2014-09-26 02:02:37
回答 2查看 210关注 0票数 1

我想永久地从git存储库的整个历史中删除指定的提交。我看到了这条线,建议使用以下内容:

代码语言:javascript
复制
git reset --hard HEAD~4
git push origin HEAD --force

这很好,并且重置了我的存储库的状态,但是它绝不会删除我的提交。我想真正回过头来回顾历史,并放弃4次修改后对回购的修改。

有人能帮我吗?当我尝试上面的内容时,我仍然会看到一些不想要的提交。

我看到了这篇文章,但是在研究这个解决方案之前,我想检查一下是否还有其他选择。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-26 08:15:26

从你的问题来看,当你跑的时候会发生什么?

代码语言:javascript
复制
git push origin HEAD --force

还不清楚,但我至少可以想到两个原因,为什么它可能无法强迫masterorigin

  1. 当前签出的分支不是master,而是已在origin上更新的分支,或者
  2. 您有一个独立的HEAD

通过运行master,确保git checkout master确实是当前选中的分支;然后运行部队推送命令。或者,在master命令中显式地指定git push

代码语言:javascript
复制
git push --force origin master

这样就行了。

票数 1
EN

Stack Overflow用户

发布于 2014-09-26 13:29:51

如果分支或标记(即称为“松散对象”)不再引用不必要的提交,则垃圾收集器将自动删除它们。默认情况下,GC对90天以上的对象起作用。

您仍然可以使用以下方法手动触发较早的GC:

代码语言:javascript
复制
git reflog expire --expire=now --all
git gc --prune=all

但是,这将只对本地存储库起作用,而不适用于GitHub。GitHub使用自己的选项运行每周一次的GC,因此如果您想要删除提交现在的,那么您将不得不删除存储库,重新创建它,并在GC清理之后推送您的本地。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26050917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档