web-dev-qa-db-fra.com

Git: copier tous les fichiers d'un répertoire d'une autre branche

Comment copier tous les fichiers d'un répertoire d'une autre branche? Je peux lister tous les fichiers de ce répertoire en faisant

git ls-tree master:dirname

Je peux ensuite copier tous les fichiers individuellement en faisant

git checkout master -- dirname/filename

Cependant, l'utilisation de caractères génériques a jusqu'à présent été un échec total. Cela ne fait rien:

git checkout master -- dirname/*.png

Bien que je suppose que je puisse utiliser un script bash pour faire cela, il doit y avoir un moyen plus facile, non?

173
alexenko

Comme vous n'essayez pas de déplacer les fichiers dans l'arborescence, vous devriez pouvoir simplement extraire le répertoire:

git checkout master -- dirname
254
CB Bailey

S'il n'y a pas d'espaces dans les chemins et que vous êtes intéressé, comme je l'étais, aux fichiers d'extension spécifique uniquement, vous pouvez utiliser

git checkout otherBranch -- $(git ls-tree --name-only -r otherBranch | egrep '*.Java')
15
test30