忽略将来使用git add -f添加的.gitignore文件的修改

时间:2013-09-25 09:00:19

标签: git gitignore

我经常发现自己正在使用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这些文件都会自动包含在内。

2 个答案:

答案 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中,您可以找到将任何二进制文件附加到仓库中任何对象的方法。