¿Cómo incrustar un git-hash actualizado en Version.hpp?

Título original: ¿Cómo hacer que git ignore mi archivo independientemente de la bifurcación?

Tengo el siguiente archivo de post-checkout que funciona como se esperaba:

#!/usr/bin/ruby

cmd = ENV["HOME"] + "/dev/pitbull/cpp/bin/gen_version.rb --write"
`#{cmd}`

La secuencia de comandos gen_version.rb determina una marca de tiempo, la última etiqueta maestra y el hash HEAD git y escribe en unVERSION.hpp archivo que también está en git.

Entonces usouse git update-index --assume-unchanged VERSION.hpp Hacer que git ignore mi cambio.

Ahora, esto funciona muy bien si me quedo en mi rama de desarrollo. Pero cuando intento unget checkout masterEstoy jodido

git checkout master
error: Your local changes to the following files would be overwritten by checkout:
    cpp/inc/core/util/VERSION.hpp
Please, commit your changes or stash them before you can switch branches.
Aborting

¿Cuál es la configuración de git correcta para que pueda actualizar VERSION.hpp cuando realizo el check out pero que git ignore cualquier cambio en este archivo, independientemente de mi sucursal?

EDITAR Cambié el tema ya que la solución final aborda un tema más amplio que puede ser más útil para más usuarios de SO. De modo que puede leer este tema de dos maneras: con el título original y la respuesta a continuación, o con el problema más amplio arriba, nuevamente con la solución completa a continuación.

Respuestas a la pregunta(1)

Su respuesta a la pregunta