相关疑难解决方法(0)

如何在git历史中查找/识别大型提交?

我有一个300 MB的git repo.我目前检出的文件重2 MB,git repo重298 MB.这基本上是一个仅限代码的回购,重量不应超过几MB.

最有可能的是,有人在某个时候偶然犯了一些重文件(视频,巨大的图像等),然后将它们删除......但不是从git中删除,所以我们有无用大文件的历史.如何在git历史记录中追踪大文件?有400多个提交,所以一个接一个将是耗时的.

注意:我的问题不是关于如何删除文件,而是如何在第一时间找到它.

git

313
推荐指数
10
解决办法
9万
查看次数

哪个提交有这个blob?

鉴于blob的哈希,有没有办法获得在他们的树中有这个blob的提交列表?

git version-control

133
推荐指数
7
解决办法
4万
查看次数

git找到胖子提交

是否有可能获得有关每次提交中的更改浪费了多少空间的信息 - 因此我可以找到添加大文件或大量文件的提交.这都是为了尝试减少git repo大小(重新定位和过滤提交)

git statistics commit find

52
推荐指数
3
解决办法
2万
查看次数

git二进制差异算法(增量存储)是否标准化?

Git使用增量压缩来存储彼此相似的对象.

此算法是否已标准化并在其他工具中使用?是否有描述格式的文档?它与xdelta/VCDIFF/RFC 3284兼容吗?

compression git binary-diff vcdiff

50
推荐指数
3
解决办法
2万
查看次数

如何在git存储库中找到N个最大的文件?

我想在我的存储库中找到10个最大的文件.我想出的脚本如下:

REP_HOME_DIR=<top level git directory>
max_huge_files=10

cd ${REP_HOME_DIR}
git verify-pack -v ${REP_HOME_DIR}/.git/objects/pack/pack-*.idx | \
  grep blob | \
  sort -r -k 3 -n | \
  head -${max_huge_files} | \
  awk '{ system("printf \"%-80s \" `git rev-list --objects --all | grep " $1 " | cut -d\" \" -f2`"); printf "Size:%5d MB Size in pack file:%5d MB\n", $3/1048576,  $4/1048576; }'
cd -
Run Code Online (Sandbox Code Playgroud)

是否有更好/更优雅的方式来做同样的事情?

"文件"是指已经检入存储库的文件.

git

40
推荐指数
6
解决办法
1万
查看次数

git删除文件的最旧版本

我有一个33 MB的大文件,我想永久删除该文件的最旧版本,所以我只保留最新的X版本.怎么做?

我裸露的存储库因此而变得庞大.

我尝试了以下..但它完全删除了文件

git filter-branch --index-filter 'git rm --cached --ignore-unmatch big_manual.txt' HEAD
Run Code Online (Sandbox Code Playgroud)

为了识别我的存储库中的大文件,我使用了Aristotle Pagaltzis的git-large-blob.

git

20
推荐指数
2
解决办法
6305
查看次数

Git删除历史记录提交

我有一个超过3年的大型存储库git,我想删除超过一年前的更改历史记录.这可能吗?可以使用git rebase但是如何?

git

6
推荐指数
1
解决办法
2676
查看次数