我正在LaTeX上写一篇论文,用Git对它进行版本控制。
通常,我只跟踪源文件(例如.tex
,.bib
和论文中使用的图形文件。
尽管如此,我仍然感觉是否以及如何跟踪输出pdf
文件。
一方面每次提交它都是不切实际的(总是有变化,每次提交成本约为1MB),而另一方面,能够立即获得以前的版本(也适用于同事,而不是假设他们可以从源代码编译它。
但是,由于我不需要标记每分钟更改一次pdf,偶尔提交它似乎是最好的选择。不过,我不知道这样的最佳工作流程是什么。
(我发布我的回答,只是不把它与问题的内容混在一起。我问这个问题,因为我不确定我所做的是否是最好的做法。)
答案 0 :(得分:3)
您可以使用git update-index
让Git假设PDF未经修改。这样您就可以在不包含PDF的情况下使用git commit -a
:
git update-index --assume-unchanged output.pdf
# Commit all modified files (but not output.pdf)
git commit -a
当您想要提交对PDF的更改时,您必须停止假设它在您添加之前保持不变:
git update-index --no-assume-unchanged output.pdf
git add output.pdf
git update-index --assume-unchanged output.pdf
git commit
由于最后一步有些尴尬,因此为它创建一个别名是有意义的:
git config alias.commit-pdf '!git update-index --no-assume-unchanged output.pdf && git add output.pdf && git update-index --assume-unchanged output.pdf && git commit'
现在你可以做到
# Commit all modified files (but not output.pdf)
git commit -a
# When necessary, commit your modified PDF
git commit-pdf
或者,如果您不想在别名中硬编码PDF的名称,可以像这样创建:
git config alias.force-commit '!git update-index --no-assume-unchanged "$1" && git add "$1" && git update-index --assume-unchanged "$1" && git commit'
并像这样使用它:
git force-commit output.pdf
答案 1 :(得分:1)
我一直在玩的工作流程是:
实际上只是不时提交pdf
(但我需要小心git commit -a
和git add .
,这样会让人讨厌。