tag git export desde el repositorio remoto github




git push origin master (8)

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.


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 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

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.


Me encontré con este mismo problema antes, y AFAICT, parece que solo funciona con Bitbucket, por ejemplo

ysim:~/repos$ git archive --format=tar --prefix=alembic/ --remote=ssh://[email protected]/zzzeek/alembic.git master | tar -xf -
ysim:~/repos$ ls
alembic

Pero encontré una solución para GitHub usando wget, por lo que en la nueva interfaz de GitHub, encontrará un botón que dice "Descargar ZIP" en la parte inferior de la barra lateral derecha; haga clic derecho sobre él y copie la dirección del enlace.

Luego, en la línea de comando (entendí la idea desde here ):

wget -qO- -O tmp.zip <zipball url> && unzip tmp.zip && rm tmp.zip

Eso lo descomprimirá en un directorio llamado algo como repo-master/ .

Si lo desea, también puede alias esto en su .gitconfig para que no tenga que recordar / escribir todo eso, por ejemplo

export = "! f() { wget -qO- -O tmp.zip \"$1\" && unzip tmp.zip && rm tmp.zip; }; f"

Entonces puedes hacer algo como esto en el caparazón:

ysim:~/repos$ git export https://github.com/ysim/verbinski/archive/master.zip
ysim:~/repos$ ls
verbinski-master

Si necesita esto para confirmaciones con nombre (es decir, ramas y etiquetas), puede usar git clone --depth=1 combinado con el git archive

Vale la pena saber que git clone --depth=1 clona todos los commit superiores en todas las ramas y etiquetas (no solo master ). Entonces, después de hacer un clon tan superficial, puede ingresar al directorio local y crear un git archive --format=tar tag_to_be_exported .

Entonces, si desea exportar la etiqueta release1.1

git clone --depth=1 [email protected]:xxx/yyy.git
cd yyy
git archive --format=tar release1.1 -o release1.1.tar

Así que a menos que necesite exportar identificadores de compromiso sin nombre, esta puede ser una buena solución.


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.







github