tag repositorio origin example eliminar ejemplo crear git

repositorio - ¿Cómo saber si un archivo es git seguido(por código de salida de shell)?



git push example (8)

¿Hay alguna forma de saber si un archivo está siendo rastreado ejecutando algún comando git y verificando su código de salida?

En otras palabras: es git rastreando un archivo?


Intenta ejecutar el git status en el archivo. Se imprimirá un error si no es rastreado por git

PS$> git status foo.txt error: pathspec ''foo.txt'' did not match any file(s) known to git.


No conozco ningún comando git que dé un código de salida "malo", pero parece que una forma fácil de hacerlo sería usar un comando git que no da salida para un archivo que no se rastrea, como git-log o git-ls-archivos. De esa manera, realmente no tiene que hacer ningún análisis, puede ejecutarlo a través de otra utilidad simple como grep para ver si hubo algún resultado.

Por ejemplo,

git-ls-files test_file.c | grep

saldrá con un código cero si se realiza un seguimiento del archivo, pero con un código de salida de uno si no se realiza el seguimiento del archivo.


Sólo mis dos centavos:

git ls-files | grep -x relative/path

donde relative/path se puede determinar fácilmente presionando la tab dentro de un shell de autocompletado. Añadir un adicional | wc -l | wc -l para obtener una salida de 1 o 0.


Si no desea saturar su consola con mensajes de error, también puede ejecutar

git ls-files file_name

y luego comprobar el resultado. Si git no devuelve nada, entonces el archivo no es rastreado. Si es rastreado, git devolverá la ruta del archivo.

Esto es útil si desea combinarlo en un script, por ejemplo, PowerShell:

$gitResult = (git ls-files $_) | out-string if ($gitResult.length -ne 0) { ## do stuff with the tracked file }


Sugiero un alias personalizado en usted .gitconfig .

Tienes que hacer la manera de hacerlo:

1) Con el comando git:

git config --global alias.check-file <command>

2) Editando ~/.gitconfig y agregue esta línea en la sección de alias:

[alias] check-file = "!f() { if [ $# -eq 0 ]; then echo ''Filename missing!''; else tracked=$(git ls-files ${1}); if [[ -z ${tracked} ]]; then echo ''File not tracked''; else echo ''File tracked''; fi; fi; }; f"

Una vez ejecutado el comando (1) o el archivo guardado (2), en su espacio de trabajo puede probarlo:

$ git check-file $ Filename missing $ git check-file README.md $ File tracked $ git check-file foo $ File not tracked


tratar:

git ls-files --error-unmatch <file name>

saldrá con 1 si el archivo no es rastreado


usar git log dará información sobre esto. Si el archivo es rastreado en git, el comando muestra algunos resultados (registros). Si no está vacío.

Por ejemplo, si el archivo es git seguido,

root@user-ubuntu:~/project-repo-directory# git log src/../somefile.js commit ad9180b772d5c64dcd79a6cbb9487bd2ef08cbfc Author: User <[email protected]> Date: Mon Feb 20 07:45:04 2017 -0600 fix eslint indentation errors .... ....

Si el archivo no es git seguido,

root@user-ubuntu:~/project-repo-directory# git log src/../somefile.js root@user-ubuntu:~/project-repo-directory#


EDITAR

Si necesita usar git de bash, existe la opción --porcelain para git status :

--porcelana

Proporcione la salida en un formato estable y fácil de analizar para los scripts. Actualmente, esto es idéntico a --short output, pero se garantiza que no cambiará en el futuro, lo que lo hace seguro para los scripts.

La salida se ve así:

> git status --porcelain M starthudson.sh ?? bla

O si solo haces un archivo a la vez:

> git status --porcelain bla ?? bla

ORIGINAL

hacer:

git status

Verá un informe que indica qué archivos se actualizaron y cuáles no están rastreados.

Puede ver que bla.sh es rastreado y modificado y newbla no es rastreado:

# On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # # modified: bla.sh # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # newbla no changes added to commit (use "git add" and/or "git commit -a")