Produciendo git diff para nuevos files sin seguimiento

A menudo me parece que quiero compartir estado de trabajo en un tree git sin hacer commits / branches usando git diff y pastebins, correo electrónico, etc. Esto funciona bien cuando todos los cambios son modificaciones en files ya rastreados, pero no cuando hay nuevos files involucrados. Puedo usar git add -N para agregar un file rastreado vacío a diff contra, pero esto es problemático si voy a cometer otras cosas antes de los cambios en cuestión (o si los cambios en cuestión son solo basura que quiero lanzar) lejos). ¿Hay alguna manera fácil de get diffs para agregar nuevos files incluidos con git diff sin cambiar su estado en el repository? Hasta ahora, lo que tengo es un guión feo:

 for i in "$@" ; do diff -u /dev/null "$i" | sed -e 's@^+++ @+++ b/@ ; done 

Es esta la mejor manera?

No me opongo por completo a las soluciones alternativas que cambian el estado de git, siempre y cuando sea fácil volver al estado exacto antes de realizar el cambio (por ejemplo, con varios files modificados, cambios realizados, etc.)

Puede exportar files sin seguimiento, modificados o eliminados a un file como .tar.gz y enviarlos a sus colegas. Puedes probar lo siguiente:

  • Exportar files modificados, movidos y eliminados

    tar zvcf ~/new-files-cache.tar.gz `git diff --name-only --diff-filter=ACMRT`

  • Exportar files sin seguimiento (nuevos), modificados y eliminados

    tar zvcf ~/new-files-cache.tar.gz ` git status --short | sed 's/^ *[^ ]* \(.*\)/\1/g' `

Encontré las soluciones aquí: https://cmanios.wordpress.com/2014/04/12/export-untracked-modified-moved-and-deleted-files-from-a-git-repository-to-archive/