2011-09-08 24 views
6

En una máquina de producción, quiero consultar un archivo específico en una revisión específica de GitHub para facilitar la migración de la base de datos. No quiero registrar (o incluso clonar) todo el repositorio de código fuente (porque este es mi entorno de producción). ¿Cómo puedo extraer solo el archivo que estoy buscando?¿Cómo puedo ver un solo archivo de GitHub sin clonar todo el repositorio?

+2

ya resuelto segura: http://stackoverflow.com/questions/610208/how-to-retrieve-a-single-file-from-specific -revision-en-git http://stackoverflow.com/questions/692246/how-do-i-revert-one-file-to-the-last-commit-in-git http://stackoverflow.com/questions/6580641/how-to-checkout-a-single-file-in-git http://stackoverflow.com/questions/1125476/git-retrieve-a-single-file-from-a-repository – fuzzyalej

+1

All de los anteriores son en su mayoría irrelevantes, excepto http://stackoverflow.com/questions/1125476/git-retrieve-a-single-file-from-a-repository, pero desafortunadamente no se puede usar '' --remote = '' con GitHub (http://groups.google.com/group/github/browse_thread/thread/cfcbcb1dc5f41f16). –

Respuesta

3

Por lo que puedo decir, la descarga de un solo archivo desde un repositorio git servido en http es actualmente imposible. Creo que GitHub tiene una función de "descarga" separada que quieren que la gente use en su lugar (pero no sé si será compatible con la descarga de un solo archivo).

La solución alternativa es clonar todo el repositorio (!) Y luego extraer el archivo de su interés. Aquí está una función fiesta de la que hace el trabajo:

git-cat() { 
    if [ -z "$1" -o -z "$2" ]; then 
     echo "Usage: git-cat REPO_URL FILE [BRANCH]" 
     exit 1 
    fi 
    tmprepo=`mktemp -d -t gitrepo.XXXXXX` 
    reponame=$1 
    filename=$2 
    branchname=$3 
    if [ -z "$branchname" ]; then 
     branchname="master" 
    fi 
    git clone -nq $reponame $tmprepo && 
    git --git-dir $tmprepo/.git show ${branchname}:${filename} && 
    rm -rf $tmprepo 
} 
8

hago esto por columnas vertebrales como tal

curl -O https://raw.github.com/documentcloud/backbone/master/backbone-min.js 
1

Mi solución es como en el primer mensaje. Pero trato de explicar un poco más. Hay un botón "Raw" en GitHub para cada archivo: se mostrará solo el texto en el navegador. Además, puedes usar esa url.

Por ejemplo, he repo https://github.com/MasterSergius/conf_files.git y quiero conseguir mi archivo .vimrc, por lo que aquí el enlace a mi archivo: https://raw.githubusercontent.com/MasterSergius/conf_files/master/.vimrc Creo, que por esta plantilla incluso se puede adivinar por url archivo de recompra y archivo ruta completa. Por lo tanto, ahora puedo descargarlo con curl:

curl https://raw.githubusercontent.com/MasterSergius/conf_files/master/.vimrc -o ~/.vimrc 
Cuestiones relacionadas