¿Cómo puedo crear un archivo del depósito actual, incluidos los cambios locales no confirmados utilizando git archive
?Archivo de depósito de Git con cambios no confirmados
Respuesta
Sé que esto es viejo, pero creo que encontré una solución.
Run:
stashName=`git stash create`;
git archive <options> $stashName
Desde git quiere cometer un sólido a hacer un archivo, podemos hacer un 'uno off' de confirmar utilizando git stash
. El comando create
solo crea la confirmación de ocultación (no restablece el directorio de trabajo ni lo envía a la pila de ocultación) y devuelve el hash para ello.
Si le preocupa el espacio de la confirmación colgante, puede limpiarlo con un git gc --prune=now
. De lo contrario, solo espera 2 semanas y desaparecerá.
Si no ha confirmado los cambios, git archive
no lo ayudará. Si solo desea una instantánea de su área de trabajo, tar
es probablemente su mejor opción.
Mejora de la respuesta de nevsan para mi propósito - para archivar último código en cualquier caso (comprometidos o no):
uploadStash=`git stash create`; git archive -o code_outgoing.zip ${uploadStash:-HEAD}
Corregido un error: git stash create [now] siempre regresa con éxito, y no imprime nada cuando no hay archivos para esconder. Use la sintaxis bash $ {var: -default} en lugar de confiar en el código de salida. –
IIRC hay un problema con esto, no elimina los archivos eliminados de git del archivo. –
Otra solución con git ls-files
:
git ls-files -z | xargs -0 tar -czvf archive.tar.gz
Esta es, en mi opinión, la mejor respuesta. Sin embargo, recomendaría usar la opción -z de ls-files y la opción -0 (cero) de xargs, de modo que los nombres de archivos con espacios se manejen correctamente: git ls-files -z | xargs -0 tar -czvf archive.tar.gz . – S2108887
¡Tienes toda la razón! Gracias. He agregado estas opciones a la línea de comando. –
'git ls-files | tar Tczf - archive.tar.gz' no tiene límites impuestos por el sistema sobre el tamaño de los argumentos de un solo comando. xargs no es bueno para ningún comando que realmente necesites ejecutar solo una vez para todo. – jthill
- 1. Git recupera cambios no confirmados
- 2. git culpa - ignorar los cambios no confirmados
- 3. Git pull eliminó cambios no confirmados
- 4. Prueba de cambios no confirmados en mercurial
- 5. postal últimos cambios confirmados
- 6. Impresión git programáticamente y comprobación de cambios no confirmados
- 7. Mercurial dice "abortar: cambios no confirmados pendientes", no quiero cometer
- 8. ¿Cómo hacer que Git Merge maneje cambios no confirmados en mi árbol de trabajo?
- 9. Git: crea una bifurcación desde cambios no asignados/no confirmados en el maestro
- 10. Realización de cambios no confirmados en el maestro a una nueva rama por Git
- 11. ¿Cuál es la forma más fácil en Git de "seleccionar" cambios no confirmados en un archivo individual?
- 12. Xcode dice "Cambios no confirmados" Cada vez que trato de mover o presionar
- 13. SVN: y bash: cómo saber si hay cambios no confirmados
- 14. Depósito remoto claro de Git
- 15. ¿Cómo puedo cargar cambios confirmados en mi repositorio de GitHub?
- 16. git svn status: muestra los cambios que no están confirmados en svn
- 17. Subversion confirmando cambios no confirmados en una nueva rama
- 18. Ignorar archivos modificados (pero no confirmados) en git?
- 19. Obtener los últimos cambios de archivo con GIT
- 20. Comparación de cambios en confirmaciones con el archivo actual por Git
- 21. Al usar git, ¿cómo mueves algunos cambios no confirmados de una rama a otra rama en una carpeta diferente?
- 22. Manera correcta de descartar cambios en Git
- 23. no puede rebasar: tiene cambios unstaged GIT
- 24. Filtrar registro de git para mostrar solo mis cambios
- 25. Los comandos de Textmate Git fallan con 'sh: línea 1: git: comando no encontrado'
- 26. Cambios posteriores en el archivo después de "agregar git"
- 27. Cambios de untage en Git a un archivo específico
- 28. git perdido cambios ocultos
- 29. Escuchando cambios de Git Repo
- 30. Git: deshacer cambios locales; git add. + git rm?
Funciona muy bien, gracias! –