git - tipos - Cómo obtener un solo archivo de otra rama
¿cómo traemos los cambios del repositorio remoto? (5)
Estoy usando git y trabajando en la rama maestra. Esta rama tiene un archivo llamado app.js
Tengo una rama experiment
en la que hice muchos cambios y toneladas de confirmaciones. Ahora quiero llevar todos los cambios realizados solo a app.js
desde el experiment
hasta la rama master
.
¿Cómo puedo hacer eso?
Una vez más no quiero una fusión. Solo quiero llevar todos los cambios en app.js
desde experiment
rama del experiment
rama master
.
O si quieres todos los archivos de otra rama:
git checkout <brachname> -- .
Suplementario a las respuestas de VonC y Chhh.
git show experiment:path/to/relative/app.js > app.js
# If your current working directory is relative than just use
git show experiment:app.js > app.js
o
git checkout experiment -- app.js
Todo es mucho más simple, usa git checkout para eso.
Supongamos you''re on master
rama you''re on master
, para obtener app.js from new-feature
rama app.js from new-feature
haz:
git checkout new-feature path/to/app.js
// note that there is no leading slash in the path!
Esto te traerá los contenidos del archivo deseado. Puede, como siempre, usar parte de sha1 en lugar del nombre de rama de nueva característica para obtener el archivo como estaba en ese compromiso en particular.
git checkout branch_name file_name
Ejemplo:
git checkout master App.java
git checkout master # first get back to master
git checkout experiment -- app.js # then copy the version of app.js
# from branch "experiment"
Vea también git cómo deshacer los cambios de un archivo?
Como menciona Jakub Narębski en los comentarios:
git show experiment:path/to/app.js > path/to/app.js
también funciona, excepto que, como se detalla en la pregunta de SO " ¿Cómo recuperar un solo archivo de una revisión específica en Git? ", debe usar la ruta completa desde el directorio raíz del repositorio.
De ahí la ruta / to / app.js utilizada por Jakub en su ejemplo.
Como menciona Frosty en el comentario:
solo obtendrás el estado más reciente de app.js
Pero, para git checkout
o git show
, puede hacer referencia a cualquier revisión que desee, como se ilustra en la pregunta SO " revisión de git checkout de un archivo en git gui ":
$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME
sería lo mismo si $ FILENAME es una ruta completa de un archivo 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í.