2012-03-28 23 views

Respuesta

7

No estoy seguro de lo que quiere decir el uno con el otro, pero si desea una lista individual (por ejemplo, todos los archivos modificados) puede usar git ls-files con los indicadores correctos (para archivos modificados es -m). Si desea toda esta información a la vez, puede usar git status --porcelain para obtener un resultado analizable del estado del script.

+0

El estado de Git no muestra los nuevos directorios/archivos que se han agregado al repositorio remoto. Lo hace ? – Jean

+0

@alertjean: ¿Qué quiere decir con "nuevo"? ¿Están sin seguimiento? ¿Están agregados pero no comprometidos? ¿Qué son? –

+0

Gracias, esto es justo lo que estaba buscando. Ahora puedo hacerlo, p. 'geany $ (git ls-files -m)' – mwfearnley

9

Lo que probablemente quiere decir algo así como:

git fetch  # update what you know about the remote repo 
git diff --name-status master origin/master 

pero es bastante difícil decir exactamente lo ramas desea diff de su pregunta.

7

Una forma de hacerlo es con el comando whatchanged:

$ git whatchanged 

Esto demuestra, que los archivos modificados para cada confirmación en el árbol y se puede utilizar para mirar detalles también. Echar un vistazo a git help whatchanged

23

La mejor manera de enumerar estos archivos está usando git status --porcelain

Por ejemplo: Para eliminar archivos que hayan sido eliminados:

git status --porcelain | awk 'match($1, "D"){print $2}' | xargs git rm 
+0

La eliminación de la tubería final al final es una buena forma de enumerar qué archivos se han eliminado. Útil si tienes un estado de git muy largo y quieres filtrar en un estado particular. – IanVS

5

Use el funcionamiento en seco (-n) la opción de git add:

git add -A -n

+0

yup, ¡esa es la que yo quería! – Doug

1

uso con el comando --name-status

ejemplo, con las etiquetas:

git diff v1.0.1 v1.0.2 --name-status 

ejemplo con commits:

git diff b79810fc4d be69e41d1c --name-status 

aparecerá una lista de todos los archivos actualizados con sus estados: M - modificada D - elimina A - añadió

0

Para obtener sólo los nombres de archivo y el estado de los archivos modificados actualmente puede simplemente:

git diff --name-status

Usted obtendrá la salida al descubierto de esta manera:

M  a.txt 
M  b.txt 

Ahora, canalizar la salida a cut para extraer el la segunda columna:

git diff --name-status | cut -f2

entonces tendrá que sólo los nombres de archivo:

a.txt 
b.txt 
Cuestiones relacionadas