我将归档一个包含大量垃圾的旧的大型项目。我希望我永远不会再需要它,但我想把所有重要的东西都放在版本控制之下。由于项目中的混乱,很难说清哪些是源代码,哪些可以删除(没有makefile
,没有make clean
,什么都没有)。* 所以我想把几乎所有的东西都放在那里,只考虑排除最大的文件。*
我怎样才能列出要提交(或暂存)的文件及其大小?
我可以写一个脚本或任何东西,但希望有一个更简单的解决方案。我在Cygwin下工作,唯一可用的gui是git gui
,它不显示文件大小。否则它会是完美的我所需要的。
4条答案
按热度按时间jexiocij1#
你可以试试这个它查找所有大于1M的文件,并将其从最大到最小排序。打印的文件大小以字节为单位:
字符串
输出量:
型
更新:循环
find
返回的文件并打印它们的git
状态:型
h6my8fg22#
首先,目录树顶部的
du -sk .
将给予所需的空间。在执行git gc
之后,可能会高估。但是,在项目退役之前很久,您就应该使用版本控制了。
deyfvvtc3#
如果你已经添加了这些文件,在git中有一个命令
ls-files
。输出可以通过各种巧妙的方式来获得所需的内容。https://git-scm.com/docs/git-ls-files我建议在第一次大的git添加之前设置一个.gitignore文件来通配符化任何明显的。
使用
-s
开关列出暂存项,仅获取文件路径,然后使用du获取文件大小:字符串
从du中删除human会留下kb中的所有值。它允许使用sort,将最大的放在底部:
型
然后可以使用输出来移除大的
型
然后使用
git reset <file>
删除问题文件。获取输出,您可以决定要删除的行(这可以做得更聪明,但只是取尾的行数,然后删除头的总数)。型
2ic8powd4#
我不了解Git,但如果你使用Mercurial,你可以使用以下组合:
字符串