en lugar de la ruta relativa larga?¿Cómo puedo ejecutar el "estado de git" y simplemente obtener los nombres de archivo
Respuesta
La salida de git status --porcelain
, diseñado para ser fácil de analizar en un script, da salida a las rutas completas en lugar de rutas relativas independientemente del lugar donde el directorio actual está dentro del árbol.
Cada salida de línea por git status --porcelain
tiene dos caracteres principales que indican el estado del archivo (por ejemplo, si no está rastreado, modificado, nuevo, eliminado, etc.) seguido de un espacio, por lo que si solo desea las rutas completas de todo lo que se menciona en la salida de git status
que puede hacer:
git status --porcelain | sed s/^...//
Igual que el estado de git -s pero sin colorear. – earlonrails
Encontré que estaba buscando una pregunta ligeramente diferente, pero esto todavía incluye el marcador de estado (que no creo que haya una opción para eliminar). La respuesta de @sehe es mejor si solo quieres el nombre de archivo y nada más. –
@IsaacAggrey: excepto que con la respuesta de sehe tienes que ejecutar múltiples comandos, e incluso esos comandos perderán archivos sin seguimiento que aparecerían en el resultado del estado de git, por lo que no es una respuesta precisa a la pregunta. Es fácil quitar los caracteres de estado del inicio de la salida producida por lo que sugerí: he editado mi respuesta para mostrar cómo. –
git status
siempre caminará hacia abajo (edite y hacia arriba) en el árbol y mostrará las rutas relativas. Si sólo desea que el archivo en el directorio donde se encuentra, See this related answer
Para obtener sólo los nombres de archivo, como usted pidió:
git status --porcelain | sed -e 's!.*/!!'
no puedo ver cómo este sería útil.
Sin duda dependerá de su flujo de trabajo. Si está utilizando rspec, puede ejecutar solo las pruebas que acaba de modificar. rspec $ (git diff --name-only) – golfadas
Aha, yo creo simplemente entendí la pregunta: desea nombres base? Tack en | while read a; do basename "$a"; done
a cualquiera de los siguientes:
¿qué tal
git diff --name-only
para cambios relativos al índice
git diff --name-only --staged
para ... bien organizado chages:)
git diff --name-only HEAD
tiene tanto
Veo, si solo quiere _basenames_ vire esto al final de cualquiera: '| mientras lee fname; hacer el nombre base "$ fname"; hecho' – sehe
obtener el nombre de los archivos modificados
git status --porcelain|awk '{if($1=="M") {print "basename " $2}}'|sh
utilizo guión similar para copiar los archivos modificados a un servidor remoto, como a continuación:
git status --porcelain|awk '{if($1=="M") {print "scp " $2 " [email protected]_ip:~/my_codebase/$(dirname " $2 ")/;"} }'|sh
Hay una manera más fácil de buscar usando awk: 'git status --porcelain | awk '/^M/{print $ 2}' ' –
Creo que cortar es bueno para esto. caminos
git status -s | cut -c4-
y aquí estaba usando sed para quitar los códigos de estado. nunca usé la bandera -c para cortar antes. ¡bonito! agregue esto a su .gitconfig para un buen comienzo de día: 'de =! $ EDITOR $ (estado de git --porcelain | corte -c4-) & # abra todos los archivos modificados en EDITOR' –
Para alguien que no esté familiarizado con' corte' comando, 'cortar -c 4-' significa, tomar caracteres del cuarto carácter. –
salidas de estado git relativas por lo que si hace cd en el mismo directorio que el archivo (en la raíz de su directorio de trabajo) antes de ejecutar git status que simplemente muestra los nombres base de agregado/archivos por etapas.
cd /long/path/to/my/repo/root/dir
"stuff" > ./newfile.txt
> git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: /long/path/to/my/repo/root/dir/plus/some/more/levels/of/directory/structure/inside/it/changed_file.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
# long/path/to/my/repo/root/dir/plus/some/even/more/levels/of/directory/structure/inside/it/but_another_new_file.txt
# newfile.txt
no changes added to commit (use "git add" and/or "git commit -a")
es decir, 'newfile.txt' aparece sin la ruta completa porque estás en el mismo camino que él.
- 1. Cómo obtener nombres de fondo Ejecutar aplicaciones
- 2. C# cómo puedo obtener todos los nombres de los elementos de un archivo XML
- 3. ¿Cómo puedo obtener solo los autores de un archivo específico de un git-repo?
- 4. ¿Cómo puedo obtener el SQL de un estado preparado?
- 5. ¿Cómo puedo mostrar solo los nombres y los títulos de confirmación desde una etiqueta en Git?
- 6. ¿Cómo obtener los nombres de los archivos?
- 7. ¿Cómo puedo mostrar el contenido de un archivo en un estado específico de un git repo?
- 8. Los nombres de archivo sensibles a mayúsculas y minúsculas de Git-windows no se manejan correctamente
- 9. ¿Cómo obtener los nombres de las hojas de los archivos XLS sin cargar todo el archivo?
- 10. Cómo obtener el estado del archivo de carga en Flask
- 11. ¿Cómo agregar el estado del archivo git a la línea de estado de vim?
- 12. Obtener los nombres de archivo sólo de ruta completa
- 13. ¿Cómo puedo obtener el estado de un programa?
- 14. ¿cómo puedo obtener el ícono de archivo?
- 15. cómo obtener sólo los nombres de archivo desde el directorio, no todo el recorrido
- 16. Obtener el espacio de nombres del archivo xml C#
- 17. ¿Cuál es el estado de mi submódulo de git y cómo puedo limpiarlo?
- 18. submódulo git los archivos modificados de estado
- 19. ¿Cómo puedo obtener Xcode para compilar y ejecutar con Applescript?
- 20. edad rsync y espacios en los nombres de archivo
- 21. Obtener el estado de retorno Y la salida del programa
- 22. ¿Puedo ejecutar el archivo .jar en Tomcat?
- 23. Ejecutar automáticamente el gancho Git al crear una etiqueta Git
- 24. ¿Cómo puede obtener los nombres de los parámetros del método?
- 25. ¿Cómo desactivo los nombres de archivo de Windows en Java?
- 26. ¿Cómo puedo obtener mysqldump para preservar el caso de los nombres de tabla?
- 27. ¿Cómo puedo descargar y configurar los nombres de archivo usando wget -i?
- 28. ¿Cómo puedo configurar el autocompletado para los comandos de Git?
- 29. Obtener los últimos cambios de archivo con GIT
- 30. Git merge -s theirs: ¿Simplemente?
['git status'] (http://www.kernel.org/pub/software/scm/git/docs/git-status.html) genera rutas relativas, no rutas absolutas. – Johnsyweb
Me gustaría obtener solo archivos cuando lo haga. – myusuf3
Simplemente analiza el texto ... – poke