首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从git存储库中删除未引用的提交

从git存储库中删除未引用的提交
EN

Stack Overflow用户
提问于 2012-12-11 09:15:11
回答 2查看 3K关注 0票数 6

我有一个git提交历史,如下所示:

代码语言:javascript
运行
复制
          U
         / 
A---B---C---D---E master

没有任何东西指向提交U,但我知道它的散列。我如何从我的存储库中完全删除这个提交,就像它从来不存在一样?我是唯一一个使用这个回购的人。

我尝试使用git rebase,但它既可以删除分支的一部分,也可以移动提交,但似乎无法删除单个提交。

如果我先执行git checkout <hash>,然后执行git reset --hard HEAD~1,我就看不到提交了。它实际上是完全消失了,还是仍然隐藏在回购中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-11 10:12:44

最终它会被git清理掉,但是你可以查看git gc来强制执行垃圾收集。

clean命令则不同,它不会为您处理此问题。

票数 4
EN

Stack Overflow用户

发布于 2015-03-23 12:51:52

here所述,只需使用

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

git reflog expire --expire-unreachable=now --allreflog中删除所有不可达提交的引用。

git gc --prune=now会自行删除提交。

注意:只使用git gc --prune=now将不起作用,因为这些提交仍然在reflog中被引用。因此,清除reflog是必需的。

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

https://stackoverflow.com/questions/13812103

复制
相关文章

相似问题

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