![如何对多个项目中使用的 TeX 相关文件进行版本控制?](https://linux22.com/image/283344/%E5%A6%82%E4%BD%95%E5%AF%B9%E5%A4%9A%E4%B8%AA%E9%A1%B9%E7%9B%AE%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%9A%84%20TeX%20%E7%9B%B8%E5%85%B3%E6%96%87%E4%BB%B6%E8%BF%9B%E8%A1%8C%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6%EF%BC%9F.png)
我已经是 TeX 的狂热用户一段时间了。我的大部分讲义和作业都是用 LaTeX 写的。这就是为什么我通常一次要处理大约六个 LaTeX 项目。随着时间的推移,我积累了大量自己的命令和环境,我将它们存储在一个文件中makros.tex
。我还有一个大型.bib
文件来存储文献。
由于我只想拥有该文件的中心副本,因此在过去的几个月里我使用了以下方法:
- 将集中文件
makros.tex
等存储lit.bib
在名为includes
- 创建指向该文件夹的符号链接,并将此链接放入我的项目文件夹中
\include{includes/makros.tex}
在我的项目中使用等。
现在我的问题来了:几周前我开始在我的 C++ 项目中使用 git,并且成为了它的忠实粉丝。因此,我现在也想在我的 TeX 项目中使用 git。但问题是,git 不能很好地处理符号链接。因此文件夹includes
实际上并未上传。
你们是如何处理每个项目使用的文件的?我对实现以下功能的文件结构 / 工作流程非常感兴趣:
- 这些文件仅
makros.tex
存储lit.bib
在一个位置,即includes/
我计算机的一个文件夹中。 - 我可以将它们包含到每个项目中。
- 当我将我的项目推送到 GitHub 或 Bitbucket 时,文件夹
includes/
也会被推送,这样,当朋友下载我的 repo 时,他可以编译我的笔记,而无需我将文件夹发送给他includes/
。
如果这很重要:我使用 Mac OS X 作为主要操作系统,使用 Ubuntu 作为辅助操作系统。
答案1
您可以使用git 子模块. 将共享代码放在一个目录中,并像往常一样创建一个 git 存储库。然后您可以将此存储库作为子模块添加到其他项目中:
git submodule add <URL> <name>
当您克隆存储库时,您可以使用开关--recursive
自动拉入子模块:
git clone --recursive <URL>
使用子模块可确保代码不重复,并且可以轻松地将代码包含在其他项目中。此外,子模块是 git 的一个功能,对 GitHub 或 Bitbucket 来说不会造成任何问题。