Question Comment obtenir un seul fichier d'une autre succursale


J'utilise git et travaille sur la branche master. Cette branche a un fichier appelé app.js.

j'ai un experiment branche dans laquelle j'ai fait un tas de changements et de tonnes de commits. Maintenant, je veux apporter tous les changements effectués uniquement à app.js de experiment à master branche.

Comment je fais ça?

Encore une fois je ne veux pas de fusion. Je veux juste apporter tous les changements dans app.js de experiment branche à master branche.


821
2018-03-02 15:15


origine


Réponses:


git checkout master               # first get back to master
git checkout experiment -- app.js # then copy the version of app.js 
                                  # from branch "experiment"

Voir également git comment annuler les changements d'un fichier?

Comme Jakub Narębski mentionne dans les commentaires:

git show experiment:path/to/app.js > app.js

fonctionne aussi, sauf que, comme détaillé dans la question SO "Comment récupérer un seul fichier à partir d'une révision spécifique dans Git?", vous devez utiliser le chemin complet du répertoire racine du repo.
D'où le chemin / to / app.js utilisé par Jakub dans son exemple.

Comme Glacial mentionne dans le commentaire:

vous obtiendrez seulement l'état le plus récent de app.js

Mais pour git checkout ou git show, vous pouvez réellement référencer toute révision que vous voulez, comme illustré dans la question SO "git checkout révision d'un fichier dans git gui":

$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME

serait le même est $ FILENAME est un chemin complet d'un fichier versionné.

$REVISION peut être comme montré dans git rev-parse:

experiment@{yesterday}:app.js # app.js as it was yesterday 
experiment^:app.js            # app.js on the first commit parent
experiment@{2}:app.js         # app.js two commits ago

etc.


1071
2018-03-02 15:23



Tout est beaucoup plus simple, utilisez git checkout pour ça.

Supposer you're on master branche, pour obtenir app.js from new-feature branche faire:

git checkout new-feature path/to/app.js

// note that there is no leading slash in the path!

Cela vous apportera le contenu du fichier désiré. Vous pouvez, comme toujours, utiliser une partie de sha1 au lieu de  nouvelle fonctionnalité  Nom de la filiale pour obtenir le fichier tel qu'il était dans ce commit particulier.


235
2018-04-05 08:48



Supplémentaire aux réponses de VonC et de chhh.

git show experiment:path/to/relative/app.js > app.js
# If your current working directory is relative than just use
git show experiment:app.js > app.js

ou

git checkout experiment -- app.js

26
2017-12-08 02:22



Ou si vous voulez tous les fichiers d'une autre branche:

git checkout <brachname> -- .

4
2018-02-02 18:51



git checkout branch_name file_name

Exemple:

git checkout master App.java

4
2018-05-11 09:43