我有一个很大的目录结构,里面有很多二进制文件(图像)。我想跟踪哪些文件被添加/删除/更改,而不实际存储更改。使用git可以做到吗?再次重申,我不关心更改的内容,只想登记文件被添加/删除/更改的事实。除了git之外,欢迎其他适用于Windows/Linux/macOS的建议。
8yparm6h1#
不。事实上,这不是Git的本质。它甚至不知道有任何文件被添加/删除/更改。它只是对你的实际项目进行快照。每个快照都包含了项目中的所有文件。这就是Git实际存储的全部内容。你不能要求它不这样做;这就是Git所做的。
6jjcrrmo2#
实际上,你可以...使用git之外的一些魔术技巧。生成所有当前文件的列表(带校验和,sha1、sha256或md5),并将其放入文件中...添加文件,提交....然后,过一段时间后,您执行相同的操作...添加、提交.....然后过一段时间后,您执行相同的操作。因此.....您可以,通过比较不同提交的文件的内容,知道发生了什么,而不需要实际存储图像本身。不太优雅,但它会起作用。
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)。
3条答案
按热度按时间8yparm6h1#
不。事实上,这不是Git的本质。它甚至不知道有任何文件被添加/删除/更改。它只是对你的实际项目进行快照。每个快照都包含了项目中的所有文件。这就是Git实际存储的全部内容。你不能要求它不这样做;这就是Git所做的。
6jjcrrmo2#
实际上,你可以...使用git之外的一些魔术技巧。生成所有当前文件的列表(带校验和,sha1、sha256或md5),并将其放入文件中...添加文件,提交....然后,过一段时间后,您执行相同的操作...添加、提交.....然后过一段时间后,您执行相同的操作。因此.....您可以,通过比较不同提交的文件的内容,知道发生了什么,而不需要实际存储图像本身。不太优雅,但它会起作用。
gywdnpxw3#
受@eftshift0建议的启发,这就是我现在正在做的事情(而且效果很好!)
1.排除所有内容,但我的目录列表中包含.gitignore
1.将带有修改日期的文件列表保存到ls.txt中(决定使用日期来跟踪更改对我来说已经足够了,所以不做校验和)。
1.提交列表
使用find的PS打印时间实际上会很慢(我的目录大约有10 k个文件,需要几分钟),所以如果你要跟踪很多文件,而你不关心修改日期,最好把它取出来。可能只是windows的问题(我在windows上使用git bash)。