【发布时间】:2021-03-01 05:18:24
【问题描述】:
我最近推送了一个上游分支,该分支意外添加到了我们不希望在存储库中的大文件中。我想删除它。
这是添加此文件的最新推送,并且不在 master 分支上。它只是一个最近创建的分支,只有一次提交。
我在其他来源中查看了之前关于此的 SO 问题,但不清楚我能做什么:
- This answer 暗示仅使用 filter-tree 实际上不会释放存储库中的空间,这就是我要删除大文件的全部原因。
- 上述答案还建议删除-blob,我无法访问。我被普通的 git 操作所困扰,而不是扩展或其他。
- 像this 这样的其他站点建议如果它已经被推送,filter-branch 可能甚至无法工作?我什至不知道如何解释如何在这里使用
--force-with-lease。 - 从很多这些答案中也不清楚我是否需要指定某种文件路径,或者它是否会从存储库中的任何位置擦除该文件的任何实例。
是否会将此提交中的更改挑选到新分支作为未暂存的更改、删除文件、将分支推送到上游并在本地删除旧分支并将删除向上推送,可能会解决此问题吗?
【问题讨论】:
-
1.删除提交。 2. 从 reflog 中删除提交/清除 reflog。 3. 让 git gc 努力工作。
-
如果提交已被推送,如何删除?如何从 reflog 中删除它或清除 reflog?如何让 GC 做它需要做的任何事情?
-
如果 blob 不再被任何提交引用,GC 最终会自行删除它。
-
修改提交会创建一个新的、已更改的提交并删除对原始提交的引用(即它替换原始提交)。
标签: git