Git: ¿Cómo actualizar/comprar un solo archivo desde el maestro de origen remoto?
El escenario:
- Hago algunos cambios en un solo archivo localmente y lo ejecuto
git add
,git commit
ygit push
- El archivo se envía al repositorio maestro de origen remoto.
- Tengo otro repositorio local que se implementa vía Capistrano con el método "remote_cache" desde ese repositorio remoto
- Ahora no quiero implementar toda la aplicación, sino simplemente actualizar/verificar ese único archivo.
¿Es esto posible de alguna manera con git? No pude encontrar nada que funcionara ni pude resolverlo. Con SVN lo acabo de hacer svn up file
y listo.
Es posible hacerlo (en el repositorio implementado)
git fetch
git checkout origin/master -- path/to/file
La recuperación descargará todos los cambios recientes, pero no los colocará en su código desprotegido actual (área de trabajo).
La compra actualizará el árbol de trabajo con el archivo particular de los cambios descargados ( origin/master
).
Al menos esto funciona para mí para esas pequeñas correcciones de errores tipográficos, donde se siente extraño crear una rama, etc. solo para cambiar una palabra en un archivo.
Con Git 2.23 (agosto de 2019) y el nuevo comando (aún experimental) git restore
, visto en "¿ Cómo restablecer todos los archivos del directorio de trabajo pero no del área de preparación? ", Eso sería:
git fetch
git restore -s origin/master -- path/to/file
La idea es: git restore
solo trata con archivos, no con archivos y ramas como git checkout
lo hace.
Ver " Confundido porgit checkout
": ahí es donde git switch
entra en juego)
codersam agrega en los comentarios :
en mi caso quería obtener los datos de mi fuente ascendente (de la cual bifurqué).
Así que simplemente cambié a:git restore -s upstream/master -- path/to/file
El siguiente código funcionó para mí:
git fetch
git checkout <branch from which file needs to be fetched> <filepath>
Simplemente me funciona
git checkout origin/develop file_name.php
git archive --format=zip --remote=ssh://<user>@<host>/repos/<repo name> <tag or HEAD> <filename> > <output file name>.zip