gpt4 book ai didi

git - 如何从 GitHub 存储库中清除分布在许多分支和提交中的 Java 工件?

转载 作者:太空狗 更新时间:2023-10-29 13:38:52 24 4
gpt4 key购买 nike

回到过去,我不小心将大量 Java 工件(.war、.jar 和 .class)提交到我的 GitHub 存储库中。这导致大小膨胀到大约 100Mb。直到后来许多提交和分支 merge 我才注意到。

幸运的是,有很多关于此的信息,因此在通过 StackOverflow、GitHub 和 Git 文档无休止地搜索之后(谢谢大家!)我终于设法将以下脚本放在一起:

#!/bin/bash          
echo "Removing history for *.war, *.jar, *.class files"

echo "Starting size"
git count-objects -v

echo "Removing history for *.war, *.jar, *.class files"
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.war' --prune-empty --tag-name-filter cat -- --all
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.jar' --prune-empty --tag-name-filter cat -- --all
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.class' --prune-empty --tag-name-filter cat -- --all

echo "Purging refs and garbage collection"
# Purge the backups
rm -Rf .git/refs/original

# Force reflog to expire now (not in the default 30 days)
git reflog expire --expire=now --all

# Prune
git gc --prune=now

# Aggressive garbage collection
git gc --aggressive --prune=now

echo
echo "Ending size (size-pack shows new size in Kb)"
git count-objects -v

# Can't do this in the script - it needs a human to be sure
echo
echo "Now use this command to force the changes into your remote repo (origin)"
echo
echo git push --all origin --force

这在本地完美运行,我的 100Mb 存储库下降到大约 2Mb。然后我用了

git push --all origin --force

命令用我的本地更改覆盖 GitHub 存储库中的所有分支。一切顺利。为了检查所有内容,我删除了本地存储库并从 GitHub 克隆。这应该是 2Mb,但又是 100Mb。

那么,说了那么多之后,我到底哪里做错了?我如何强制 GitHub 使用我的本地存储库及其已清除的历史记录?

编辑以获取更多信息

GitHub 存储库无法删除,因为它有很多附加信息(问题、wiki、监视等)。针对空的临时存储库执行此脚本工作正常 - 克隆的存储库为 2Mb。

问题仍然是为什么它不适用于主仓库。

最佳答案

都是因为 fork

事实证明,如果有人在 GitHub 上 fork 了您的存储库,那么他们会保留其中条目的链接和引用。因此,除非持有 fork 的每个人也在他们的 repo 上运行脚本,否则您的清除将不会起作用。

关于git - 如何从 GitHub 存储库中清除分布在许多分支和提交中的 Java 工件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12873063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com