tag - Git: ¿Cómo actualizar/desproteger un solo archivo del maestro de origen remoto?
git tag (6)
Creo que he encontrado un hackeo fácil.
Elimine el archivo que tiene en el repositorio local (el archivo que desea actualizar de la última confirmación en el servidor remoto)
Y luego hacer un git pull
Debido a que el archivo es eliminado, no habrá conflicto
El escenario:
- Realizo algunos cambios en un solo archivo localmente y 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 a través de Capistrano con el método "remote_cache" de ese repositorio remoto
- Ahora no quiero implementar toda la aplicación, solo actualizar / registrar ese único archivo.
Por favor, ¿es esto posible de alguna manera con git? No pude encontrar nada que funcionara ni pude resolverlo. Con SVN acabo de hacer svn up file
y listo.
Me alegraré por cualquier ayuda, gracias!
El siguiente código funcionó para mí:
git fetch
git checkout <branch from which file needs to be fetched> <filepath>
Es posible hacerlo (en el repositorio desplegado)
git fetch
git checkout origin/master -- path/to/file
La búsqueda descargará todos los cambios recientes, pero no la incluirá en su código actual (área de trabajo).
La verificación actualizará el árbol de trabajo con el archivo particular de los cambios descargados ( origin/master
).
Al menos esto me funciona para esas pequeñas correcciones de errores tipográficos, donde resulta extraño crear una rama, etc., solo para cambiar una palabra en un archivo.
Lo que puedes hacer es:
Actualiza tu repositorio local de git:
git fetch
Construye una sucursal local y compra en ella:
git branch pouet && git checkout pouet
Aplique el commit que desee en esta rama:
git cherry-pick abcdefabcdef
(abcdefabcdef es el sha1 de la confirmación que desea aplicar)
O git stash (si tiene cambios) en la sucursal en la que se encuentra, controle el master, obtenga los últimos cambios, lleve ese archivo a su escritorio (o a toda la aplicación). Revisa la rama en la que estabas. El alijo de Git se aplica de nuevo al estado en el que se encontraba, luego corrige los cambios manualmente o arrastra para reemplazar el archivo.
De esta manera no es tan genial, pero definitivamente funciona si ustedes no pueden entender nada más.
git archive --format=zip --remote=ssh://<user>@<host>/repos/<repo name> <tag or HEAD> <filename> > <output file name>.zip