在进行部分克隆时,Git子树没有正确使用.gitignore

D W*_*D W 8 git version-control split subtree gitignore

我是一名研究生,有许多脚本,bibtex的书目数据,乳胶论文草稿,开放式办公室的演示文稿,书写的海报,以及数字和结果数据.我想将所有内容放在版本控制下的一个项目中.然后,当我需要处理诸如参考书目数据之类的部分时,我想检查该子目录,根据需要进行修改并将其合并.我希望能够将一个版本签出到我的家用计算机,并且与我的工作计算机不同,并对每个计算机进行独立更改并最终将它们合并.我还希望能够从这个大项目中查看一段代码并将其与版本导入一个单独的项目中.如果我可以改变,我希望能够将它们合并回原始项目.

根据我的理解,git子树可以做到这一点.

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
Run Code Online (Sandbox Code Playgroud)

我得到一个bib目录,加上所有应该被忽略的文件或基于.gitignore的二进制文件,例如src目录以及以tilde或./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$ 
Run Code Online (Sandbox Code Playgroud)

我的.gitignore文件如下:

*.doc diff=word
*.tex diff=tex
*.bib diff=bibtex
*.py diff=python
*.eps binary
*.jpg binary
*.png binary
./bin/* binary
*~
Run Code Online (Sandbox Code Playgroud)

我该如何防止这种情况?

ape*_*arr 5

在我看来,所有这些被忽略的文件实际上都不在您的存储库中-它们只是您上次结帐时的剩余文件。

由于从原始项目中提取了特定的子树,因此.gitignore文件不再存在,因此不再“忽略”文件,因此您将看到它们处于git状态。但是它们也不属于您的仓库。他们只是坐在那里。

尝试使用“ git clean”进行清理。