¿Hay alguna forma de verificar si existe un archivo bajo la ruta relativa especificada en un control remoto? Estoy bien con buscar la información primero si es la única opción. En otras palabras, estoy buscando git-ls-files con una opción para especificar remote y branch. Sólo me interesa si existe el archivo (una lista de archivos en la rama hará también), no me importa acerca de hashes, etc. diffs¿Cómo verifico si existe un archivo en un control remoto?
Respuesta
Usted puede utilizar
git cat-file -e <remote>:<filename>
que será salir con cero cuando el archivo exista. En vez de <remote>
arriba, usaría un nombre de sucursal remota (pero de hecho podría ser cualquier referencia de objeto árbol). Para utilizar una rama remota de este tipo, necesitará tener el repositorio remoto configurado y recuperado (es decir, usando git remote add
+ git fetch
).
Un ejemplo concreto:
$ git cat-file -e origin/master:README && echo README exists
README exists
$ git cat-file -e origin/master:FAILME
fatal: Not a valid object name origin/master:FAILME
Dos cosas para tomar nota:
- Uso
/
como delimitador de ruta en los nombres de archivo, incluso en, por ejemplo, Windows. <filename>
es una ruta completa (comofoo/bar/README
), relativa a la raíz del repositorio.
Puede utilizar git archive acceder a archivos individuales sin necesidad de descargar ninguna otra parte de un repositorio:
if git archive --format=tar \
--remote=<remote_name-or-URL> master README >/dev/null; then
echo 'master has README'
else
echo 'master does not have README (or other error)'
fi
El servicio de archivo (upload-archive
) puede no estar habilitado en todos los servidores o repositorios embargo, tendrá para probarlo para los servidores y repositorios a los que necesita acceder.
Si el servicio de archivo no está disponible, tendrá que buscar objetos por los medios normales.
Si aún no tiene una configuración remota para el repositorio en cuestión, puede hacer una búsqueda "superficial" en FETCH_HEAD (esto debe hacerse en un repositorio de Git, pero puede no estar relacionado ni estar vacío):
git fetch --depth=1 remote_name-or-URL master
if git rev-parse --verify --quiet FETCH_HEAD:README >/dev/null; then
echo "repository's master has README"
else
echo "repository's master does not have README"
fi
Si usted tiene un definido a distancia para el repositorio, entonces es probable que sólo quiere actualizar y acceder al archivo a través de las ramas de seguimiento a distancia normales:
git fetch remote_name
if git rev-parse --verify --quiet remote_name/master:README >/dev/null; then
echo "remote's master has README"
else
echo "remote's master does not have README"
fi
¡Cosas geniales! Realmente útil –
tenga cuidado: la solución 'git-archive' no funciona de manera confiable. parece comprobar solo la existencia de los archivos/directorios de nivel superior, por ejemplo, 'git archive --remote =
- 1. ¿Cómo verifico si existe una clave en un registro?
- 2. bash: compruebe si existe un archivo remoto usando scp
- 3. ¿Cómo verifico si un repositorio está vacío?
- 4. ¿Cómo puedo verificar si un archivo existe en un servidor remoto usando Perl?
- 5. Cómo comprobar si un archivo existe en un archivo MAKE
- 6. ¿Cómo verifico en SQLite si existe una tabla?
- 7. Cómo activar el comando remoto si el remoto no existe
- 8. ¿Cómo verifico si existe un nombre de columna en un CachedRowSet?
- 9. ¿Cómo verifico si existe una ruta en Zookeeper usando Curator?
- 10. ¿Cómo verifico si existe una etiqueta en XSLT?
- 11. ¿cómo puedo verificar si existe un archivo?
- 12. ¿Cómo causo un error en MSBuild si existe un archivo?
- 13. Cómo comprobar si existe un archivo en un servidor externo
- 14. ¿Cómo verifico si existe una columna en SQL Server?
- 15. Cómo comprobar si existe un archivo desde una url
- 16. Cómo verifico que un elemento no existe en Selenium 2
- 17. Usando JSch, ¿hay alguna forma de saber si existe un archivo remoto sin hacer un ls?
- 18. ¿Cómo verifico si un MSI particular está instalado?
- 19. ¿Cómo verifico si un archivo está en un directorio determinado, en PowerShell?
- 20. ¿Cómo comprobar si existe un directorio que contiene un archivo?
- 21. Crear un archivo solo si no existe
- 22. ¿Cómo saber si existe un archivo en C#/.NET?
- 23. ¿Cómo comprobar si un archivo existe en una carpeta?
- 24. ¿Cómo puedo verificar si existe un archivo en Perl?
- 25. ¿Cómo verifico si mi matriz incluye un objeto?
- 26. Error al comprobar si existe un archivo
- 27. htaccess reescriba si existe un archivo redirigido
- 28. ¿Cómo verifico si un directorio es grabable en PHP?
- 29. ¿Cómo puedo averiguar si un archivo es un archivo o directorio si no existe?
- 30. ¿Cómo creo un directorio en el host remoto si no existe sin ssh-ing?
por ' 'quiere decir una Remote Branch, lo que significa que debe haber configurado el control remoto y ejecutar 'git fetch ' first; está examinando la sucursal remota en su repositorio, por lo que debe asegurarse de que esté actualizado. –
Cascabel
Precisamente, gracias. Incorporé eso en la respuesta. – earl