web-dev-qa-db-fra.com

Est-il possible d'extraire un seul fichier dans Git?

Je travaille sur une branche Git qui comporte des tests erronés et j'aimerais extraire (fusionner les modifications, pas seulement écraser) ces tests d'une autre branche où ils sont déjà corrigés.

Je sais que je peux faire

git pull Origin that_other_branch

mais cela va tenter de fusionner beaucoup d'autres fichiers, pour cela je ne suis pas encore prêt.

Est-il possible d'extraire et de fusionner uniquement le fichier spécifié (et pas tout) à partir de cette autre branche?

Ce n'est pas un duplicata de requête Git pull pour un seul fichier, car toutes les réponses à cette question sont comment inverser localement le fichier fichier modifié à la version du référentiel, sans changer de branche.

148
h22

Vous pouvez récupérer et extraire un seul fichier de cette façon:

git fetch
git checkout -m <revision> <yourfilepath>
git add <yourfilepath>
git commit

Concernant la commande git checkout:<revision> - un nom de branche, c’est-à-dire Origin/master<yourfilepath> n’inclut pas le nom du référentiel (que vous pouvez obtenir en cliquant sur copy path bouton sur une page de fichier sur GitHub), c.-à-d. README.md

128
aleroot

Voici une méthode un peu plus facile que je viens de trouver lorsque je fais des recherches sur ceci:

git fetch {remote}
git checkout FETCH_HEAD -- {file}
233
Chris
git checkout master -- myplugin.js

maître = nom de la branche

myplugin.js = nom du fichier

10
Mawardy

La réponse de @ Mawardy a fonctionné pour moi, mais mes modifications étaient sur la télécommande et j'ai donc dû spécifier l'origine.

git checkout Origin/master -- {filename}
7
Luke Flournoy

Oui, voici le processus:

# Navigate to a directory and initiate a local repository
git init        

# Add remote repository to be tracked for changes:   
git remote add Origin https://github.com/username/repository_name.git

# Track all changes made on above remote repository
# This will show files on remote repository not available on local repository
git fetch

# Add file present in staging area for checkout
git check Origin/master -m /path/to/file
# NOTE: /path/to/file is a relative path from repository_name
git add /path/to/file

# Verify track of file(s) being committed to local repository
git status

# Commit to local repository
git commit -m "commit message"

# You may perform a final check of the staging area again with git status
1
Saurabh