¿Cómo puedo hacer que git acepte cambios de modo sin aceptar todos los cambios de texto?


Tengo el problema opuesto de " ¿Cómo puedo hacer cambios en Git ignore file mode (chmod)?" Tengo un archivo en el que he cambiado el permiso ejecutable, pero también hay algunos cambios de texto, y quiero confirmar el primero, pero no el segundo. Es este posible con git?

(En realidad, he hecho algunos cambios de texto que quiero confirmar junto con el cambio de permisos ejecutables, y otros que no quiero confirmar)

Update: Unstaging el texto cambia a la archivo, y luego haciendo git add -p una vez más y la incorporación de algunos de los cambios de texto logró obtener el cambio de modo en la puesta en escena. (Mi versión de git es 1.5.4.3)

 33
Author: Community, 2009-10-23

3 answers

git add -i le permitirá añadir selectivamente algunos trozos de un archivo al índice. No se si es sensible o no a los permisos, pero si se agregara un trozo después de la operación chmod, podría terminar en el índice correctamente incluso sin actualizar explícitamente el permiso.

 15
Author: Bob Aman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-23 03:19:44

Usted debe ser capaz de hacer:

git update-index --chmod=(+|-)x <file>

Para ajustar el bit ejecutable almacenado en el índice.

Luego puede confirmar esto por separado de cualquier cambio en el contenido de los archivos.

 77
Author: CB Bailey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-23 06:28:33

Respuesta de Charles estaba agregando tanto el modo de archivo como los cambios de contenido al índice para mí. Trabajé alrededor de él de esta manera.

git update-index --skip-worktree --chmod=+x <file>
git update-index --no-skip-worktree <file>

Ejemplo

Alternativamente puedes hacer

git update-index --chmod=+x <file>
git config interactive.singlekey 1
echo na | git reset -p
 3
Author: Steven Penny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:17:30