¿Cómo puedo forzar que git apply sobrescriba files no rastreados?

Tengo un script que aplica parches y, a veces falla por cualquier razón (permissions de file en mi caso). Quiero ejecutar el script nuevamente después de solucionar el problema, pero luego podría haber files sobrantes del bash anterior de aplicar git.

No quiero ejecutar git clean, que arrojaría otros files que me gustaría conservar. Solo quiero replace esos files sin seguimiento que se ven afectados por el parche.

Mi guion

for SITE in $SITES do echo "Updating $SITE ..." cd /home/klausi/web/$SITE chmod u+w sites/default git fetch git reset --hard origin/master git apply --index /home/klausi/web/7.33.patch git commit -m "Updated Drupal core to 7.33." git push done 

Cuando ejecuto esto de nuevo, obtengo:

 error: misc/throbber-active.gif: already exists in working directory error: misc/throbber-inactive.png: already exists in working directory error: modules/simpletest/tests/themes/test_theme/templates/node--1.tpl.php: already exists in working directory 

Así que algo así como aplicar git –force sería bueno.

Hay un par de opciones que podrías probar.

  • Al aplicar ejecutar git apply --check en lugar de aplicar el parche para ver si se puede aplicar, si no lo cancela. Si el cheque regresa bien, entonces sigue y ejecuta git apply como de costumbre
  • Al aplicar run git apply --cached para aplicar directamente al índice pero deje intacta la copy de trabajo. Si esto falla, simplemente borre el índice. Si funciona, adelante y comprométalo.