¿Cómo hacer una copy de security rápida de los files sin seguimiento que quiero eliminar con git clean?

Tengo muchos files sin seguimiento. Estoy bastante seguro de que la mayoría de ellos puedo eliminar, sin embargo … ya sabes, la copy de security podría ser útil;)

¿Qué estás haciendo en una situación similar?

El siguiente command creará un file tar en su directory de inicio de todos los files no rastreados (y no ignorados) en su directory:

git ls-files --others --exclude-standard -z | xargs -0 tar rvf ~/backup-untracked.tar 

Si vas a utilizar esta técnica, comtesting cuidadosamente que git ls-files --others --exclude-standard por sí solo produce la list de files que esperas!

Algunas notas sobre esta solución pueden estar en order:

  • He usado -z para get git ls-files para generar la list de files con NUL (un byte cero) como el separador entre files, y el parámetro -0 para xargs le dice que considere NUL como el separador entre los parameters lee de la input estándar. Este es un truco estándar para tratar con la posibilidad de que un nombre de file contenga una nueva línea, ya que los únicos dos bytes que no están permitidos en los nombres de file en Linux son NUL y / .

  • Si tiene una gran cantidad de files sin xargs , xargs ejecutará el command tar más de una vez, por lo que es importante que le haya dicho a tar que añada files ( r ) en lugar de crear un nuevo file ( c ); de lo contrario, las invocaciones posteriores tar sobrescribirá el file creado justo antes.

En general, si alguna vez van a ser útiles, ¡entonces debe registrarlos! Si no los necesita en este momento, ¡revíselos y elimínelos! IE, seguirlos como files eliminados. De esta forma, siempre podrá recuperarlos más tarde si decide que los necesita.

Recuerde, una regla fundamental de usar un sistema de control de versiones es "rastrear todo ". Pequeños cambios, cambios interrumpidos (en una twig), etc. Nunca se sabe cuándo podría necesitar esos files o cambios de nuevo, así que use su sistema de VC para asegurarse de no perderlos.

Usa git-stash , pero primero tienes que rastrearlos. Si se ignoran explícitamente, no se agregarán.

 git add . git stash 

Ahora todos los files sin seguimiento están escondidos y han desaparecido del directory de trabajo. Si esto fue incorrecto, use git stash pop , agregue y confirme los que desea conservar, y repita.

git ls-files –modified -z | xargs -0 tar rvf ~ / test-model-integration / backup-untracked.tar

Bueno, el command anterior funcionó para mí.