¿Cómo sincronizar múltiples files * .gitignore a .gitignore_global?

Me gustaría que mi .gitignore_global sea ​​el nodo principal de varios files *.gitignore . Para lograr esto, me gustaría que .gitignore_global agregue los contenidos de múltiples files *.gitignore a sí mismo mediante la import de files *.gitignore con su ruta.

Por ejemplo, si git entiende el command de source , .gitignore_global puede verse así:

 # platform-specific .gitignore files source ~/.gitignore/gitignore.git/Global/Linux.gitignore source ~/.gitignore/gitignore.git/Global/OSX.gitignore source ~/.gitignore/gitignore.git/Global/Windows.gitignore # language-specific .gitignore files source ~/.gitignore/gitignore.git/C++.gitignore source ~/.gitignore/gitignore.git/Java.gitignore # above .gitignore files are cloned from the following Github page: # https://github.com/github/gitignore.git 

Lamentablemente, el command de source no fue reconocido por git . ¿Alguna recomendación?

El source command no es realmente un command, sino un shell incorporado. Está diseñado para procesar scripts de shell dentro del process de shell original (sin ejecutar nuevos processs).

El source command no puede proporcionar nada más que scripts de shell reales. Por lo tanto, su bash de .gitignore* files .gitignore* no va a funcionar, no por cualquier estiramiento de la imaginación.

.gitignore mecanismo de .gitignore es muy simple, simplemente puedes concatenar todos tus files de gitignore y eso debería funcionar. Sin embargo, no es realmente recomendable. La solución correcta es aplicar gitignore según sea necesario.

Puedes encontrar una fuente muy buena para reglas comunes de gitgnore en http://github.com/github/gitignore

Como @mvp menciona, más reglas pueden ralentizar el procesamiento. Aunque el fstat suele ser mucho más doloroso que ignorar las reglas generales en los repos con muchos files. Particularmente notable si usa __git_ps1 en el símbolo del sistema de PS1 – los commands de git comienzan a sentirse lentos.

Mientras tanto, la import de files .gitignore_XXX separados sobre la marcha cada vez generalmente sería una sobrecarga innecesaria. Sin embargo, una vez configurada, los files de gitignore tienden a cambiar con poca frecuencia. Así que el beneficio es principalmente para fines de organización (lo cual es bueno, cierto, pero una conveniencia de la que probablemente podamos vivir).

Considere la posibilidad de mantener gitignore_global bastante liviano y usar .gitingore local / de nivel de proyecto para los patrones de ignorar más pesados ​​y más detallados.

Recordatorio: git check-ignore -v SomeFileOrPath es extremadamente útil cuando se encuentran casos de "por qué se ignora ese file".

Además, creo que el siguiente sitio es útil para generar rápidamente files híbridos de gitignore cuando comienzo un nuevo proyecto / git repo:

 https://www.gitignore.io 

Ejemplo: Xcode + c ++ + gradle + java + ruby ​​+ libreoffice + osx + svn + vim

Incluso los coloca en order alfabético 🙂