有没有可能使用git来跟踪更改而不存储它们?

wqsoz72f  于 2022-11-20  发布在  Git
关注(0)|答案(3)|浏览(147)

我有一个很大的目录结构,里面有很多二进制文件(图像)。我想跟踪哪些文件被添加/删除/更改,而不实际存储更改。使用git可以做到吗?
再次重申,我不关心更改的内容,只想登记文件被添加/删除/更改的事实。
除了git之外,欢迎其他适用于Windows/Linux/macOS的建议。

8yparm6h

8yparm6h1#

不。事实上,这不是Git的本质。它甚至不知道有任何文件被添加/删除/更改。它只是对你的实际项目进行快照。每个快照都包含了项目中的所有文件。这就是Git实际存储的全部内容。你不能要求它不这样做;这就是Git所做的。

6jjcrrmo

6jjcrrmo2#

实际上,你可以...使用git之外的一些魔术技巧。生成所有当前文件的列表(带校验和,sha1、sha256或md5),并将其放入文件中...添加文件,提交....然后,过一段时间后,您执行相同的操作...添加、提交.....然后过一段时间后,您执行相同的操作。因此.....您可以,通过比较不同提交的文件的内容,知道发生了什么,而不需要实际存储图像本身。不太优雅,但它会起作用。

gywdnpxw

gywdnpxw3#

受@eftshift0建议的启发,这就是我现在正在做的事情(而且效果很好!)
1.排除所有内容,但我的目录列表中包含.gitignore

*
 !.gitignore
 !ls.txt

1.将带有修改日期的文件列表保存到ls.txt中(决定使用日期来跟踪更改对我来说已经足够了,所以不做校验和)。

find . -printf "%c %p\n" -iname "*.mov" -o -iname "*.jpg" -o -iname "*.mp4" > ls.txt

1.提交列表

git add ls.txt
 git commit -m "added some files"

使用find的PS打印时间实际上会很慢(我的目录大约有10 k个文件,需要几分钟),所以如果你要跟踪很多文件,而你不关心修改日期,最好把它取出来。可能只是windows的问题(我在windows上使用git bash)。

相关问题