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,我的问题和这个一样。 我遵循了这里列出的所有步骤:也尝试了这里列出的所有步骤。但是,包文件的大小仍然很大 之前: count: 0 size: 0 in-pack: 2259 packs: 1 size-pack: 67333 prune-packable: 0 garbage: 0 size-garbage: 0 之后: count: 0 size: 0 in-pack: 2259 packs: 1 size-pack: 67333 prune-packable: 0 garbage: 0

我的问题和这个一样。

我遵循了这里列出的所有步骤:也尝试了这里列出的所有步骤。但是,包文件的大小仍然很大

之前:

count: 0
size: 0
in-pack: 2259
packs: 1
size-pack: 67333
prune-packable: 0
garbage: 0
size-garbage: 0
之后:

count: 0
size: 0
in-pack: 2259
packs: 1
size-pack: 67333
prune-packable: 0
garbage: 0
size-garbage: 0
我仍然可以运行这个命令:
git verify pack-v.git/objects/pack/pack-xxx.idx | sort-k3-n | tail-3
并查看三个最大的文件及其相应的提交,但是当我运行
git log--oneline--branchs--
时,没有引用该文件的提交,这可能是因为我重写了提交的历史记录。很明显,我似乎把事情搞砸了

我的问题是,如何解决这个关于大.pack文件的问题

。。。当我运行git log--oneline--branchs--时,没有引用该文件的提交,这可能是因为我重写了提交的历史记录

那很好(假设这是你的意图)。现在需要做的是确保没有其他外部引用到达使用该文件的提交

使用
--branchs
告诉
git log
git rev list
1查看所有分支名称引用,即
refs/heads/
下的所有内容。但是在
refs/tags/
下可能有标记名引用,所以您应该检查一下。甚至可能还有其他参考资料,所以您应该检查所有参考资料。最简单的方法是使用
--all
而不是
--branchs
:查看所有引用

但这也错过了重演。每个引用都(至少可能)有一个reflog。要漫游重登录,请使用
-g
--walk reflogs
。请注意,您必须单独执行此操作。如果存在引用提交的reflog条目,则可以手动使其过期;或者,您可以使用蛮力方法,将所有的reflogs全部过期(这有点危险,因为reflogs是您的主要安全网,但您是在原始存储库的副本上执行所有这些操作的,对吗?:-)

请注意,当您使用
git filter branch
来“重写历史记录”时,实际上是在将所有历史记录复制到新的历史记录中。因此,您可以临时将存储库大小增加到大约两倍,具体取决于您在过滤器中所做的操作。删除旧的reflogs并删除
refs/original/
名称空间下保存的原始引用,然后进行垃圾回收,应该会使事情缩小到原来的大小

还要注意的是,如果一个包文件有一个对应的
.keep
文件,Git即使在构建了一个覆盖所有内容的新包之后也不会扔掉保留的包。任何
.keep
文件都是手动创建的,如果合适,必须手动删除


1这两个命令,
git log
git rev list
,实际上几乎只是一个命令,由一个源文件生成。它们的入口点略有不同,设置了一些不同的默认选项,
git log
将从
HEAD
开始,如果您不指定任何其他起点,而
git rev list
需要一些起点

。。。当我运行git log--oneline--branchs--时,没有引用该文件的提交,这可能是因为我重写了提交的历史记录

那很好(假设这是你的意图)。现在需要做的是确保没有其他外部引用到达使用该文件的提交

使用
--branchs
告诉
git log
git rev list
1查看所有分支名称引用,即
refs/heads/
下的所有内容。但是在
refs/tags/
下可能有标记名引用,所以您应该检查一下。甚至可能还有其他参考资料,所以您应该检查所有参考资料。最简单的方法是使用
--all
而不是
--branchs
:查看所有引用

但这也错过了重演。每个引用都(至少可能)有一个reflog。要漫游重登录,请使用
-g
--walk reflogs
。请注意,您必须单独执行此操作。如果存在引用提交的reflog条目,则可以手动使其过期;或者,您可以使用蛮力方法,将所有的reflogs全部过期(这有点危险,因为reflogs是您的主要安全网,但您是在原始存储库的副本上执行所有这些操作的,对吗?:-)

请注意,当您使用
git filter branch
来“重写历史记录”时,实际上是在将所有历史记录复制到新的历史记录中。因此,您可以临时将存储库大小增加到大约两倍,具体取决于您在过滤器中所做的操作。删除旧的reflogs并删除
refs/original/
名称空间下保存的原始引用,然后进行垃圾回收,应该会使事情缩小到原来的大小

还要注意的是,如果一个包文件有一个对应的
.keep
文件,Git即使在构建了一个覆盖所有内容的新包之后也不会扔掉保留的包。任何
.keep
文件都是手动创建的,如果合适,必须手动删除



1这两个命令,
git log
git rev list
,实际上几乎只是一个命令,由一个源文件生成。它们的入口点略有不同,设置了一些不同的默认选项,
git log
将从
HEAD
开始,如果您不指定任何其他起点,虽然
git rev list
需要一些起点。

还有一个简单的
--reflog
选项来添加每个reflog条目,就像在命令行中给出一样,就像
--branchs
添加每个分支提示一样。@torek和@jthill-非常感谢您提供的所有信息。我终于设法缩小了存储库的大小。除了你的评论之外,这个[清单]()还帮我弄清楚了。到