2010-03-23 15 views
7

yo soy un estudiante graduado con muchos guiones, datos bibliográficos en bibtex, proyecto de tesis en látex, presentaciones en la oficina abierta, carteles en scribus, y las cifras y los datos de los resultados. Me gustaría poner todo en un proyecto bajo control de versión. Luego, cuando tengo que trabajar en una porción como los datos bibliográficos, me gustaría comprobar que subdirectorio a cabo, modificarlo según sea necesario y fusionarla back.I le gustaría la posibilidad de revisar una versión a mi ordenador personal, y una diferente a mi computadora de trabajo y hacer cambios a cada uno de forma independiente y, finalmente, fusionarlos de nuevo. También me gustaría poder ver un código de este gran proyecto e importarlo con versiones en un proyecto separado. Si puedo hacer cambios, me gustaría poder fusionarlos nuevamente al proyecto original.Git subárbol no adecuadamente usando .gitignore al hacer un clon parcial

Basado en mi entendimiento sub-árbol git puede hacer esto.

http://github.com/apenwarr/git-subtree

No es un ejemplo que está en la línea de lo que estoy tratando de hacer en:

http://psionides.jogger.pl/2010/02/04/sharing-code-between-projects-with-git-subtree/

Diga el maletero de mi proyecto contenía los directorios: (bin babero cfg data fig src todo).

Cuando uso

git subtree split -P bib -b export 
git checkout export 

me siento un directorio babero, además todos los archivos que deberían haber sido ignorados o considerados binario basado en .gitignore como el directorio src y todo lo que termina en una tilde o el directorio ./data.

[email protected]:~/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 

[email protected]Wwork:~/research/trunk$ 

Mi archivo .gitignore es el siguiente:

*.doc diff=word 
*.tex diff=tex 
*.bib diff=bibtex 
*.py diff=python 
*.eps binary 
*.jpg binary 
*.png binary 
./bin/* binary 
*~ 

¿cómo puedo evitar esto?

+1

¿Ha analizado el uso de submódulos? Están diseñados para este tipo de cosas, y un poco más automatizado ... – Cascabel

+1

Gracias por el comentario. El Subárbol supuestamente tiene muchas ventajas descritas en: http://apenwarr.ca/log/?m=200904#30 –

+0

@D W: Eso es justo: los submódulos están lejos de ser perfectos. Solo quería asegurarme de que fuera una opción. – Cascabel

Respuesta

4

Me parece que todos esos ficheros ignorados no están realmente en tu repositorio - son sólo restos de su pago y envío anterior.

Dado que extrajo un subárbol particular de su proyecto original, su archivo .gitignore ya no está presente, por lo que los archivos ya no se "ignoran", por lo que los verá en estado de git. Pero tampoco son parte de su repositorio; solo están sentados allí.

Intente utilizar 'git limpia' para limpiarlas.

+0

¿Qué pasa con el medio ambiente como node_modules o vendor? –

3

Creo que esto no es nada específico del subárbol de git, tendrías la misma situación si cambiaras de dos ramas y una de ellas generara algunos archivos adicionales que estaban en gitignore y la otra no sabría acerca de ellos ... yo diría que este comportamiento de Git es bastante correcto, porque si añado un archivo a gitignore, espero que va a ignorar por completo y no voy a hacer nada con ella - que incluye también no elimine cuando se mover a una rama donde no es ignorado ...

Las posibles maneras en que puede hacer frente a esto serían:

  • agregar los mismos archivos también a la gitignore en el subdirectorio/subproyecto
  • hacer git limpia antes de cambiar ramas
  • simplemente ignorar esto, después de todo, probablemente no hará mucho trabajo en la rama generada por la subdivisión del subárbol de git, aparte de empujar los compromisos fuera ... si desea trabajar en el subproyecto por separado, entonces tal vez simplemente seleccione el subproyecto en otro directorio fuera del principal.
0

Su archivo .gitignore está mezclando de forma incorrecta gitignore sintaxis con gitattributes sintaxis.

El archivo .gitignore solo debe tener patrones. Cosas como

*.py diff=python 
*.eps binary 

pertenece en el archivo .gitattributes lugar.

Cuestiones relacionadas