Manejo de cambios a files con –skip-worktree desde otra twig

En mi máquina, configuré --skip-worktree en config/database.yml .

 git update-index --skip-worktree config/database.yml 

Otro desarrollador se ha comprometido y se ha fusionado en los cambios de la twig de desarrollo en config/database.yml mientras trabajaba en el proyecto.

Ahora, cuando hago git pull origin develop , obtengo

 Andrews-Air:[project] agrimm$ git pull origin develop From bitbucket.org:[company]/[project] * branch develop -> FETCH_HEAD Updating [SHA]..[Another SHA] error: Your local changes to the following files would be overwritten by merge: config/database.yml Please, commit your changes or stash them before you can merge. Aborting 

¿Cómo debo manejar tal cambio? Deberia hacer

 git update-index --no-skip-worktree config/database.yml git stash save "Save changes to config/database.yml" git pull origin develop git stash apply # Fix any conflicts git update-index --skip-worktree config/database.yml 

¿O hay un enfoque less hacky?

Eso no es un enfoque hacky en absoluto. En realidad, es exactamente lo que necesita hacer en esta situación. Repasemos el escenario paso a paso. (Haciendo algunas suposiciones en el path porque es un file YML).

Está ignorando el file porque tiene cambios que solo afectan su process de compilation local y no quiere accidentalmente enviar esos cambios a otros y potencialmente afectarlos o, peor aún, la producción. Una práctica bastante normal y buena.

A veces, estos files deben ser cambiados, como en esta situación, por lo que se compromete una versión actualizada. Al activar estos cambios, se activará una comprobación para verificar que el file sobreescrito coincide con el del commit y, de lo contrario, arroja el error. (Si falla la verificación de integridad ignorará la bandera)

Estás ignorando activamente el file, por lo que debes decirle a git que se preocupe por él nuevamente. De lo contrario, ningún process de git verá el file.

 git update-index --no-skip-worktree config/database.yml 

Luego, coloque sus cambios en un lugar seguro, y como no quiere cometerlos, el escondite es el mejor lugar:

 git stash save "Save changes to config/database.yml" 

Finalmente puede traer los cambios del control remoto a su sucursal local. Ya ha buscado cuando obtuvo el error original, por lo que también puede hacer la fusión. Asi que:

 git pull origin develop -or- git merge origin/develop 

Estás actualizado ahora, pero aún deseas esas actualizaciones para que funcione localmente, así que recuperémoslas de nuestro lugar de almacenamiento seguro:

 git stash pop 

Si hay conflictos, puede resolverlos y asegurarse de que su proyecto se comstackrá correctamente después de integrar los nuevos cambios.

Finalmente, queremos proteger a los otros usuarios de nuestros cambios locales de nuevo, por lo que restablecemos el indicador skip-worktree en la ruta.

 git update-index --skip-worktree config/database.yml 

Y terminamos.