我下载了一个tar文件,它是Linux示例根文件系统,并提取到一个目录中。我想在目录上使用git版本控制。但不知何故,文件大小异常。
目录的原始大小是3.6G,然后使用git来控制目录(git添加和提交(。然而,在签出HEAD后,它变成了3.8G。
我也尝试了git-lfs(大文件存储(,它不起作用。
我应该如何使用git来控制这样一个Linux示例根文件系统目录?任何信息,我都会非常感谢你的帮助。
tar -xf Tegra_Linux_Sample-Root-Filesystem_R32.2.1_aarch64.tbz2 -C rootfs/
root@richard-VMBox:/home/richard/Desktop/example# du -sh rootfs/
3.6G rootfs/ ####The rootfs directory total size is 3.6G.
List of each sub-directories size.
root@richard-VMBox:/home/richard/Desktop/example/rootfs# du -sh */
12M bin/
80K boot/
4.0K dev/
12M etc/
4.0K home/
353M lib/
4.0K media/
4.0K mnt/
4.0K opt/
4.0K proc/
12K root/
132K run/
11M sbin/
4.0K snap/
4.0K srv/
4.0K sys/
4.0K tmp/
3.1G usr/
134M var/
- git-add-rootfs/
- git commit-m"添加rootfs/dir">
root@richard-VMBox:/home/rerichard/Desktop/example#rm-rf-rootfs/
root@richard-VMBox:/home/richard/Desktop/example# git reset --hard HEAD
...Checking out files: 100% (113421/113421), done.
HEAD is now at a65e1fe81 add rootfs dir
root@richard-VMBox:/home/richard/Desktop/example# du -sh rootfs/
3.8G rootfs/ ###File size is bigger.
root@richard-VMBox:/home/richard/Desktop/example/rootfs# du -sh */
12M bin/
80K boot/
4.0K dev/
12M etc/
4.0K home/
335M lib/
4.0K media/
4.0K mnt/
4.0K opt/
4.0K proc/
12K root/
132K run/
11M sbin/
4.0K snap/
4.0K srv/
4.0K sys/
4.0K tmp/
3.3G usr/
134M var/
通常,对整个文件系统进行版本控制不是一个好主意。像Git这样的版本控制工具往往在文本文件上效果最好,不建议存储大型二进制文件。Git也不支持你想要的东西,比如硬链接、用户和组权限,或者644和755之外的任何权限。
如果你真的想这样做,你可能需要研究像pristine-tar
这样的东西,它存储文件以及这些文件和tarball本身之间的区别。
您看到文件大小增加的原因是因为.git
目录。当您将文件签入Git时,所有文件和目录的内容都被压缩存储在.git
目录中。因此,额外的200MB可能来自所存储的数据。