Question Comment copier une version d'un fichier unique d'une branche git à une autre?


J'ai deux branches qui sont complètement fusionnées.

Cependant, après la fusion, je me rends compte qu'un fichier a été foiré par la fusion (quelqu'un d'autre a fait un formatage automatique, gah), et il serait simplement plus facile de passer à la nouvelle version dans l'autre branche, et puis ré-insérer mon changement de ligne après l'avoir apporté dans ma branche.

Alors, quel est le moyen le plus simple pour le faire?


696
2017-11-21 01:50


origine


Réponses:


Exécutez ceci à partir de la branche où vous voulez que le fichier se termine:

git checkout otherbranch myfile.txt

Formules générales

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

Quelques notes (à partir des commentaires):

  • En utilisant le hachage de validation, vous pouvez extraire des fichiers de tout commit
  • Cela fonctionne pour les fichiers et les répertoires
  • écrase le fichier myfile.txt et mydir
  • Les caractères génériques ne fonctionnent pas, mais les chemins relatifs
  • Plusieurs chemins peuvent être spécifiés

une alternative:

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

1322
2017-11-21 04:31



Je me suis retrouvé à cette question sur une recherche similaire. Dans mon cas, je cherchais à extraire un fichier d'une autre branche dans le répertoire de travail actuel qui était différent de l'emplacement d'origine du fichier. Répondre:

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

63
2017-08-17 20:38



Qu'en est-il de l'utilisation de la commande checkout:

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

40
2018-03-06 14:30



Après la réponse de madlep, vous pouvez également copier un répertoire d'une autre branche avec le répertoire blob.

git checkout other-branch app/**

Quant à la question de l'op si vous avez seulement changé un fichier, cela fonctionnera bien ^ _ ^


10
2018-06-06 21:29



1) Assurez-vous que vous êtes dans une succursale où vous avez besoin d'une copie du fichier. par exemple: je veux sous-branche fichier dans le maître de sorte que vous devez commander ou devrait être en maître git checkout master

2) Maintenant, archivez le fichier spécifique que vous voulez de la sous-branche en master,

git checkout sub_branch file_path/my_file.ext

ici sub_branch signifie que vous avez ce fichier suivi du nom de fichier que vous devez copier.


7
2018-06-29 08:47