Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
清理git历史记录_Git_Github - Fatal编程技术网

清理git历史记录

清理git历史记录,git,github,Git,Github,在我的一个项目(签入git存储库)中,我添加了一个巨大的目录(15000个文件,3GB)。当我意识到这是错误的,我删除了它,但它似乎仍然在历史上 让它留在那里会使项目克隆成为一项很长的任务。克隆项目后,.git目录约为4GB,但实际项目大小仅为15MB 我的问题是:如何调整历史记录,例如确保删除3GB目录?或者是否有其他方法可以减少整个项目下载大小并加快克隆过程?请尝试遵循以下指南: 基本上,你能做到 git重置——硬头~1 或 git reset--hard[prev_commit]这样您就知

在我的一个项目(签入git存储库)中,我添加了一个巨大的目录(15000个文件,3GB)。当我意识到这是错误的,我删除了它,但它似乎仍然在历史上

让它留在那里会使项目克隆成为一项很长的任务。克隆项目后,.git目录约为4GB,但实际项目大小仅为15MB


我的问题是:如何调整历史记录,例如确保删除3GB目录?或者是否有其他方法可以减少整个项目下载大小并加快克隆过程?

请尝试遵循以下指南:

基本上,你能做到

git重置——硬头~1


git reset--hard[prev_commit]

这样您就知道是哪个commit引入了庞大的目录。假设这是在修订版
AAAAAAA
中完成的

要摆脱提交,仅删除目录(使用提交
bbbbbbbbb
)并再次签入是不够的:提交
aaaaaaaaa
仍然存在,扩大了您的回购规模

为了摆脱犯罪,我们需要。打开git控制台并键入

git rebase -i AAAAAAA~1
这将打开一个编辑器,其中commit
aaaaaaaaa
位于第一行。删除此行(即当Vim是您的编辑器时,点击dd)和再次删除目录的提交(
BBBBBBB
),保存文件并退出(
:wqa

在此之后,重定基址开始,完成后,
AAAAAAA
BBBBBBB
不再存在。真的

你现在也可以在它运行的时候,启动一些家务活,去拿一杯咖啡



另请参阅此答案:

只是为了澄清:3GB已经在存储库中存在一段时间了,对吗?如果不是最近的提交,或者其他人已经在大提交之后提交了提交,那么处理就不同了。dir在那里呆了大约一个月。我又在一个月前删除了它。可能有几个文件已更改。该项目只有2名开发人员。可能是重复的,谢谢你的回答。对我来说,这似乎是一个不错的计划,但实际上我更喜欢创建一个新的存储库,在那里复制代码,然后从头开始。这对我来说更容易,至少我完全理解了这个过程:)什么是
-I
~1
意思?@qed:-我指的是交互(见rebase文档)和~1指的是1回修订()