Méthode la plus simple : prendre le fichier tel qu’il est sur l’autre branche
git checkout <autre-branche> -- <chemin/vers/fichier>Exemple : tu es sur ma-branche et tu veux le fichier tel qu’il est sur develop :
git checkout develop -- packages/frontend/src/components/MainMenu.tsx- Le fichier est remplacé par la version de develop, puis mis en stage.
- Tu n’as plus qu’à committer :
git commit -m "…".
Variante : voir le contenu sans l’appliquer
git show <autre-branche>:<chemin/vers/fichier>Pour l’écrire dans un fichier (par ex. pour comparer) :
git show develop:packages/frontend/src/components/MainMenu.tsx > MainMenu.develop.tsxSi tu veux seulement un diff (patch) de ce fichier entre deux branches
git diff ma-branche..autre-branche -- <fichier> > patch.txt
git apply patch.txtEn résumé : pour “copier les changements d’un fichier ciblé d’une autre branche et les avoir sur la branche actuelle”, la commande à utiliser est git checkout <autre-branche> -- <fichier> puis un commit.
Tu peux mettre à la place de la branche n’importe quel tree-ish : nom de branche, tag ou SHA de commit.
Dans les deux cas, le fichier en working tree (et en stage avec checkout) est remplacé par la version à ce commit ; ta branche ne change pas.
Tu peux mettre à la place de la branche n’importe quel tree-ish : nom de branche, tag ou SHA de commit.
Avec git checkout (toutes versions de Git) :
# Fichier tel qu’à un commit précis (SHA complet ou court)
git checkout <commit-sha> -- <chemin/vers/fichier>
# Exemples
git checkout a1b2c3d -- packages/frontend/src/MainMenu.tsx
git checkout HEAD~2 -- packages/frontend/src/MainMenu.tsx # il y a 2 commits
git checkout HEAD^ -- packages/frontend/src/MainMenu.tsx # commit précédentAvec git restore (Git 2.23+) :
git restore --source=<commit-sha> -- <chemin/vers/fichier>
# Exemples
git restore --source=a1b2c3d -- packages/frontend/src/MainMenu.tsx
git restore --source=HEAD~2 -- packages/frontend/src/MainMenu.tsxDans les deux cas, le fichier en working tree (et en stage avec checkout) est remplacé par la version à ce commit ; ta branche ne change pas.
| Référence | Signification |
|---|---|
nom-branche |
Dernier commit de la branche |
abc1234 ou abc123 |
Commit avec ce SHA |
HEAD~n |
n commits avant HEAD sur la branche actuelle |
HEAD^ |
Commit parent (équivalent à HEAD~1) |
HEAD~3 |
3 commits en arrière |
Donc tu remplaces nom-branche par le SHA (ou par HEAD~n, etc.) et la commande fonctionne pareil pour “revert/restore” ce fichier à l’état de ce commit.