1082 votos

Cómo obtener un archivo de otra rama

Estoy usando git y trabajando en la rama principal. Esta rama tiene un archivo llamado app.js.

Tengo una rama de experimento en el cual hice un montón de cambios y toneladas de cometer. Ahora quiero traer todos los cambios realizados sólo para app.js de experimento a rama master.

¿Cómo lo hago?

Una vez más no quiero una fusión. Sólo quiero traer todos los cambios a app.js de experimento de rama a rama master.

1373voto

VonC Puntos 414372
git checkout master               # first get back to master
git checkout experiment -- app.js # then copy the version of app.js 
                                  # from branch "experiment"

Ver también git cómo deshacer los cambios de un archivo?

Como Jakub Narębski menciona en los comentarios:

git show experiment:path/to/app.js > app.js

trabaja demasiado, a excepción de que, como se detalla en la pregunta de "Cómo recuperar a un único archivo de revisión específico en Git?", usted necesidad de utilizar la ruta de acceso completa formulario en el directorio raíz de la repo.
Por lo tanto la path/to/app.js utilizado por James en su ejemplo.

Como Frosty se menciona en el comentario:

sólo obtendrá el estado más reciente de la app.js

Pero, para git checkout o git show, en realidad se puede hacer referencia a cualquier revisión que usted desea, como se ilustra en la pregunta "git checkout revisión de un archivo en git gui":

$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME

sería el mismo es de $FILENAME es una ruta completa de un fichero versionado.

$REVISION puede ser como se muestra en git rev-parse:

experiment@{yesterday}:app.js # app.js as it was yesterday 
experiment^:app.js            # app.js on the first commit parent
experiment@{2}:app.js         # app.js two commits ago

y así sucesivamente.

302voto

chhh Puntos 1154

Todo es mucho más simple, usar git checkout para eso.

Supongamos que estás en la rama principal y quiere app.js de rama new_feature, entonces:

git checkout new_feature path/to/app.js

// note that there is no leading slash in the path!

le traerá el contenido del archivo deseado. Puede, como siempre, utilizar parte de sha1 en lugar de 'new_feature' nombre de rama para obtener el archivo como era en ese particular commit.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: