我是一名研究生,拥有许多脚本、bibtex 中的参考书目数据、latex 中的论文草稿、开放式办公室中的演示文稿、scribus 中的海报以及图形和结果数据。我想把所有东西都放在一个项目中,受版本控制。然后,当我需要处理诸如参考书目数据之类的部分时,我想检查该子目录,根据需要对其进行修改并将其合并回来。我希望能够将一个版本检出到我的家用计算机上,并且与我的工作计算机不同,并对每个单独进行更改并最终将它们合并回来。我还希望能够从这个大项目中签出一段代码,并将其与版本控制一起导入到一个单独的项目中。如果我可以更改,我希望能够将它们合并回原始项目。
根据我的理解 git subtree 可以做到这一点。
http://github.com/apenwarr/git-subtree
有一个例子与我正在尝试做的事情类似:
http://psionides.jogger.pl/2010/02/04/sharing-code-between-projects-with-git-subtree/
假设我的项目的主干包含目录:(bib bin cfg data fig src todo)。
当我使用
git subtree split -P bib -b export
git checkout export
我得到一个 bib 目录,以及所有应该被忽略或基于 .gitignore 视为二进制的文件,例如 src 目录以及其中以波浪号或 ./data 目录结尾的所有文件。
dwickrama@DWwork:~/research/trunk$ ls * -r
biblography.bib JabRef
src:
script1.sh~ README~ script2.sh~
script3.sh~ script4.R~ script5.awk~
script5.py~
cfg:
cfgFile1.ini~ cfgFile2.ini~ cfgFile3.ini~
bin:
bigBinaryPackage1 bigBinaryPackage2
dwickrama@DWwork:~/research/trunk$
我的 .gitignore 文件如下:
*.doc diff=word
*.tex diff=tex
*.bib diff=bibtex
*.py diff=python
*.eps binary
*.jpg binary
*.png binary
./bin/* binary
*~
我该如何防止这种情况?