Solución:
Si el .project
y .classpath
ya están comprometidos, entonces deben eliminarse del índice (pero no del disco)
git rm --cached .project
git rm --cached .classpath
Entonces el .gitignore
funcionaría (y ese archivo se puede agregar y compartir a través de clones).
Por ejemplo, este gitignore.io/api/eclipse
entonces funcionará el archivo, que incluye:
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath
Tenga en cuenta que puede utilizar un “Directorio de plantillas” al clonar (asegúrese de que sus usuarios tengan una variable de entorno $GIT_TEMPLATE_DIR
configurado en una carpeta compartida accesible para todos).
Esa carpeta de plantilla puede contener una info/exclude
expediente, con ignorar las reglas que desea que se cumplan todos repositorios, incluidos los nuevos (git init
) que cualquier usuario usaría.
Como lo comentó Abdollah
Cuando cambia el índice, debe confirmar el cambio y presionarlo.
Luego, el archivo se elimina del repositorio. Entonces los novatos no pueden verificar los archivos.classpath
y.project
desde el repositorio.
Agregue las siguientes líneas en .gitignore y coloque el archivo dentro de la carpeta de su proyecto
/target/
/.classpath
/*.project
/.settings
/*.springBeans
La solución de git para tales escenarios está configurando BROCA PARA SALTAR EL ÁRBOL DE TRABAJO. Ejecute solo el siguiente comando:
git update-index --skip-worktree .classpath .gitignore
Se usa cuando quieres que git ignorar los cambios de archivos que ya están administrados por git y que existen en el índice. Este es un caso de uso común para archivos de configuración.
Corriendo git rm --cached
no funciona para el escenario mencionado en la pregunta. Si simplifico la pregunta, dice:
Como tener
.classpath
y.project
en el repositorio mientras que cada uno puede cambiarlo localmente y git ignora este cambio?
Como comenté en la respuesta aceptada, el inconveniente de git rm --cached
es que provoca un cambio en el índice, por lo que debe confirmar el cambio y luego enviarlo al repositorio remoto. Como resultado, .classpath
y .project
no estarán disponibles en el repositorio mientras el PO quiera que estén allí para que cualquiera que clone el repositorio por primera vez pueda usarlo.
¿Qué es SKIP-WORKTREE BIT?
Basado en git documentaion:
El bit de salto de árbol de trabajo se puede definir en una oración (larga): al leer una entrada, si está marcada como salto de árbol de trabajo, Git finge que la versión de su directorio de trabajo está actualizada y lee la versión del índice en su lugar. Aunque este bit se parece a bit asumido sin cambios, su objetivo es diferente de los bits de asumir sin cambios. Skip-worktree también tiene prioridad sobre el bit de asumir sin cambios cuando ambos están establecidos.
Más detalles están disponibles aquí.