Comment obtenir un seul fichier d'une autre branche

j'utilise git et je travaille sur master branch. Cette branche a un fichier appelé app.js .

j'ai une branche experiment dans laquelle j'ai fait un tas de changements et des tonnes de commits. Maintenant je veux apporter tous les changements faits seulement à app.js de experiment à master branche.

comment je fais ça?

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

865
demandé sur 7ochem 2010-03-02 18:15:18
la source

5 ответов

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

Voir aussi git comment faire pour annuler les modifications d'un fichier?

As Jakub Narębski mentions 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 de la révision spécifique dans Git? ", vous devez utiliser le chemin complet à partir du répertoire racine du repo.

D'où l' chemin/vers/de l'application.js utilisé par Jakub dans son exemple.

comme Frosty mentions dans le commentaire:

vous n'obtiendrez que l'état le plus récent de l'application.js

mais, pour git checkout ou git show , vous pouvez référencer n'importe quelle 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 que $FILENAME est un chemin complet d'un fichier versionné.

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

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

et ainsi de suite.

1119
répondu VonC 2017-05-23 15:18:29
la source

tout est beaucoup plus simple, utilisez git checkout pour cela.

Supposons que you're on master de la branche, pour obtenir app.js from new-feature branche:

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 branche pour obtenir le fichier tel qu'il était dans l'engager.

246
répondu Dmitry Avtonomov 2016-02-12 21:44:19
la source

Supplémentaires à VonC et chhh réponses.

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
29
répondu AlexLordThorsen 2017-01-13 00:16:14
la source
git checkout branch_name file_name

exemple:

git checkout master App.java
8
répondu Sarath 2018-05-11 14:44:42
la source

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

git checkout <brachname> -- .
6
répondu Jester 2018-02-20 05:43:06
la source

Autres questions sur git git-checkout