2

我经常发现自己使用git add -f.gitignore ( .exe, .pdf, ...) 中的二进制文件提交,只是为了在历史记录中包含一个稳定的、工作的、编译的文件,所以即使我再次编译时遇到问题,我至少可以使用它(例如,因为另一台计算机上缺少库)。

$ cat .gitignore
*.exe
*.pdf
$ git add -f program.exe documentation.pdf
$ git commit -m "Added working .exe and .pdf"
$ gcc program.c -o program.exe
$ pdflatex documentation.tex # Generates documentation.pdf
$ git status --short
 M program.exe
 M documentation.pdf

现在我已经添加了.exeand .pdf,我希望将来对它们的修改被忽略。否则,每次我执行git commit -a这些文件时都会自动包含在内。

4

2 回答 2

5

您可以在手册页--assume-unchanged中使用该选项。

git update-index --assume-unchanged program.exe documentation.pdf

这样,这些文件就不会添加到索引中。

于 2013-09-25T09:28:10.047 回答
2

将二进制文件存储在与源代码相同的存储库中是没有意义的,因为它会产生问题 - 快速增长的存储库大小、合并期间的问题、较慢的操作。如果您创建另一个存储库并存储带有版本的文件,那就更好了。它被称为二进制存储库。你甚至不需要一个适当的 VCS 存储库,只需要一组以版本号命名的文件夹,例如http://download.cdn.mozilla.net/pub/mozilla.org/firefox/releases/

另一种选择是使用git notes. 在手册页中,您可以找到一种将任何二进制文件附加到 repo 中的任何对象的方法。

于 2013-09-25T09:38:56.800 回答