我经常发现自己正在使用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
现在我添加了.exe
和.pdf
,我希望将来可以忽略对它们的修改。否则,每次git commit -a
这些文件都会自动包含在内。
答案 0 :(得分:5)
您可以使用--assume-unchanged
选项here the manpage。
git update-index --assume-unchanged program.exe documentation.pdf
通过这种方式,这些文件不会添加到索引中。
答案 1 :(得分:2)
将二进制文件存储在与源代码相同的repo中是没有意义的,因为它会产生问题 - 快速增长的repo大小,合并期间的问题,更慢的操作。如果您创建另一个repo并使用版本存储文件,则会更好。它被称为二进制存储库。您甚至不需要具有适当的VCS存储库,只需要一组以版本号命名的文件夹,例如: http://download.cdn.mozilla.net/pub/mozilla.org/firefox/releases/
另一种选择是使用git notes
。在man-page中,您可以找到将任何二进制文件附加到仓库中任何对象的方法。