Pregunta ¿Cómo copio una versión de un solo archivo de una rama de git a otra?


Tengo dos ramas que están completamente fusionadas.

Sin embargo, después de que termine la fusión, me doy cuenta de que un archivo ha sido arruinado por la fusión (otra persona hizo un auto-formato, gah), y que sería más fácil cambiar a la nueva versión en la otra rama, y luego vuelva a insertar mi cambio de una línea después de llevarlo a mi rama.

Entonces, ¿cuál es la forma más fácil de hacer esto?


696
2017-11-21 01:50


origen


Respuestas:


Ejecute esto desde la rama donde desea que termine el archivo:

git checkout otherbranch myfile.txt

Fórmulas generales:

git checkout <commit_hash> <relative_path_to_file_or_dir>
git checkout <remote_name>/<branch_name> <file_or_dir>

Algunas notas (de los comentarios):

  • Con el hash de confirmación puede extraer archivos de cualquier confirmación
  • Esto funciona para archivos y directorios
  • sobrescribe el archivo myfile.txt y mydir
  • Los comodines no funcionan, pero las rutas relativas lo hacen
  • Múltiples rutas pueden ser especificadas

una alternativa:

git show commit_id:path/to/file > path/to/file

1322
2017-11-21 04:31



Terminé con esta pregunta en una búsqueda similar. En mi caso, buscaba extraer un archivo de otra rama en el directorio de trabajo actual que era diferente de la ubicación original del archivo. Responder:

git show TREEISH:path/to/file >path/to/local/file

63
2017-08-17 20:38



¿Qué pasa con el uso de comando de pago:

  git diff --stat "$branch"
  git checkout --merge "$branch" "$file"
  git diff --stat "$branch"

40
2018-03-06 14:30



Siguiendo la respuesta de madlep, también puedes copiar un directorio de otra rama con el blob del directorio.

git checkout other-branch app/**

En cuanto a la pregunta de la operación, si solo ha cambiado un archivo allí, esto funcionará bien ^ _ ^


10
2018-06-06 21:29



1) Asegúrese de estar en una sucursal donde necesite una copia del archivo. por ejemplo: quiero un archivo secundario de rama en el maestro, por lo que debe realizar el pago o debe estar en el maestro git checkout master

2) Ahora compruebe el archivo específico solo que desee desde la subdivisión en el maestro,

git checkout sub_branch file_path/my_file.ext

aquí sub_branch significa dónde tiene ese archivo seguido de un nombre de archivo que necesita copiar.


7
2018-06-29 08:47