使用git跟踪更改的文件而不保存更改

使用git跟踪更改的文件而不保存更改,git,Git,我的文件布局是这样的 ~/foo/ foo.pl Foo.pm ~/foo/data ~/foo/data/an_article.txt ~/foo/data/an_article/ ~/foo/data/an_article/image.jpg ~/foo/data/an_article/movie.mp4 ~/foo/data/another_article.txt ~/f

我的文件布局是这样的

~/foo/
foo.pl
Foo.pm
    ~/foo/data
        ~/foo/data/an_article.txt
        ~/foo/data/an_article/
            ~/foo/data/an_article/image.jpg
            ~/foo/data/an_article/movie.mp4
        ~/foo/data/another_article.txt
        ~/foo/data/another_article/
            ~/foo/data/another_article/audio.mp3
            ~/foo/data/another_article/raster.nc
当然,我希望
git
跟踪对所有文本文件(程序、CSS、html模板和扩展名为.txt的文章)的更改。关于二进制文件,我希望
git
只跟踪它们的最新版本。因此,如果我更改movie.mp4
git
应该在其
push
pull
中包含最新版本,但是
git
不应该保存以前的版本。换句话说,我希望
git
在除了二进制文件之外的所有文件上都能发挥作用,但是对于二进制文件
git
应该假装它是
rsync

逻辑 从上面的布局可以明显看出,
~/foo/data
实际上是我的数据存储。每一篇文章都有自己的同名文件夹和相关的二进制文件。这样可以确保所有相关文件都非常接近。如果我将二进制文件移到这个结构之外,那么我不仅需要编制一个单独的部署脚本(可能是一个同步二进制文件的
rsync
),更重要的是,我破坏了数据存储的逻辑结构


建议?

Git不能按您想要的方式工作。新提交依赖于旧提交:计算新提交的SHA-1时,父提交的SHA-1将包含在计算中。这正是使Git安全的原因:对旧提交的任何修改都可以被检测到,并且会破坏历史记录。

Git的工作方式不是您想要的。新提交依赖于旧提交:计算新提交的SHA-1时,父提交的SHA-1将包含在计算中。这正是使Git安全的原因:可以检测到对旧提交的任何修改,并将破坏历史记录。

将二进制文件作为部署脚本的一部分拉入。

将二进制文件作为部署脚本的一部分拉入

从上面的布局可以明显看出,~/foo/data实际上是我的数据 商店

关于基于git的数据存储,请参见git附件:

从git中删除历史:没有这样的事情,请参见上面BrunoReis的解释

从上面的布局可以明显看出,~/foo/data实际上是我的数据 商店

关于基于git的数据存储,请参见git附件:


要从git中删除历史记录,请参见Bruno Reis的上述解释。

>建议?将二进制文件存储在git之外。虽然从技术上讲是可行的,但您想要的行为将与git的本质相矛盾。是的,我试图实现的目标将与git的
git
格格不入。但是,我在题为“逻辑”的部分中为上述问题添加了更多信息,以解释我为什么需要这个,这可能有助于找到一个高效的解决方案。>建议?将二进制文件存储在git之外。虽然从技术上讲是可行的,但您想要的行为将与git的本质相矛盾。是的,我试图实现的目标将与git的
git
格格不入。然而,我已经在题为“逻辑”的部分中为上述问题添加了更多信息,以解释我为什么需要这个,这可能有助于找到一个高效的解决方案。我不知道关于
git附件
。谢谢在阅读它的文档时,我看到了一个关于
git-media
的提到,在阅读这篇文章时,我可能需要
git-media
而不是
git-attraction
所不知道的
git-attraction
。谢谢在阅读它的文档时,我看到了一个关于
git-media
的提及,在阅读这一点时,我可能需要
git-media
而不是
git-appendment