tag - git push origin master




git export desde el repositorio remoto github (6)

Me gustaría exportar desde el repositorio remoto de Github, no clonarlo. Similar a la exportación svn, no quiero obtener la carpeta .git con ella. Puedo solucionarlo clonando y eliminando la carpeta .git. Me pregunto si hay una manera más limpia?

Lo leí en algún lugar, puedes usar git archive para lograr esto.

Sin embargo, tengo los siguientes errores ...

$ git archive --format=tar [email protected]:xxx/yyy.git master | tar -xf -

Invalid command: 'git-upload-archive 'xxx/yyy.git''
You appear to be using ssh to clone a git:// URL.
Make sure your core.gitProxy config option and the
GIT_PROXY_COMMAND environment variable are NOT set.
fatal: The remote end hung up unexpectedly

Cualquier ayuda sería genial. Gracias.



Gracias al soporte de Subversion de GitHub, puede usar svn export para obtener el proyecto sin ningún archivo de control de versiones:

svn export https://github.com/user/project/trunk

Observe el formato de URL:

  • La URL base es https://github.com/
  • USERNAME/PROJECTNAME sin .git
  • /trunk agregado al final

De esta forma puedes obtener sucursales y subdirectorios también.

Esto crea un directorio con los archivos exportados. No es posible crear un tar / zip directamente, tienes que hacerlo en dos pasos (exportar + zip). Esta es una limitación de la svn export de svn export .

Como señaló @Jon , esto creará la exportación en un directorio llamado trunk por defecto. Puede especificar un nombre diferente si lo prefiere:

svn export https://github.com/username/projectname/trunk projectname

Puede usar esta técnica para exportar cualquier subdirectorio del proyecto. Por ejemplo, si solo quieres some/path , puedes hacer:

svn export https://github.com/username/projectname/trunk/some/path local-dir-name

También puedes obtener rutas a partir de ramas y etiquetas. El punto final https://github.com/username/projectname comporta completamente como un repositorio de Subversion con un diseño regular, por lo que encontrará ramas en https://github.com/username/projectname/branches y etiquetas en https://github.com/username/projectname/tags .

Antes de exportar algo grande por error, es bueno verificar primero el contenido de la ruta. Puede hacerlo usando svn ls , por ejemplo:

svn ls https://github.com/username/projectname/

Normalmente esto debería darle:

branches/
tags/
trunk/

Podrías explorar iterativamente el repositorio de esta manera.


Para una exportación normal :

$ git archive master | tar -x -C /path/to/destination

Para un archivo zip :

$ git archive --format zip --output /path/to/destination/file.zip master

Por supuesto, para que esto funcione, primero tendrá que clonarlo localmente, no hay una manera limpia de evitarlo.


Por razones desconocidas (para mí al menos) GitHub no es compatible con esto .

We don’t support people running git-archive against our servers.

Parece una tontería, ya que a través de SVN puedes, pero ... subí la respuesta de @Janos .


Si solo está interesado en exportar desde GitHub, entonces proporciona un mecanismo para descargar tarballs. Por ejemplo:

https://github.com/torvalds/linux/downloads

Aunque dice "no hay descargas para este repositorio". aún puede usar los botones para descargar un tarball de la rama principal.

O vea este enlace para obtener una lista de los archivos tar vinculados a las etiquetas:

https://github.com/torvalds/linux/tags

Esto debería funcionar para cualquier repositorio de GitHub, no solo para el kernel de Linux.


Si su objetivo es limitar la cantidad de información intercambiada con el servidor, ¿ha considerado utilizar clone con --depth ? Sin embargo, necesitaría eliminar el subdirectorio .git (muy reducido):

git clone --depth=1 [email protected]:xxx/yyy.git && rm -rf yyy/.git




github