J'utiliserais git restore
(disponible depuis Git 2.23) :
git restore --source otherbranch path/to/myfile.txt
Pourquoi est-il meilleur que les autres options ?
- par défaut
git restore
modifier les fichiers uniquement dans le répertoire de travail.
git checkout otherbranch -- path/to/myfile.txt
copier le fichier dans le répertoire de travail (vos fichiers sur le disque) mais aussi dans la zone de transit. L'effet est le même que si vous copiez ce fichier manuellement et exécutez git add
sur elle. git restore
par défaut ne change que le répertoire de travail.
Pour obtenir le même résultat que pour git checkout otherbranch -- path/to/myfile.txt
vous pouvez écrire git restore --source otherbranch --staged --worktree path/to/myfile.txt
- par défaut
git restore
supprime les fichiers du répertoire de travail lorsqu'ils sont manquants dans une autre branche
git restore
peut être utilisé pour restaurer l'ensemble du dossier avec git restore --source otherbranch path/to/dir
. Vous pouvez effectuer une opération similaire avec git checkout
mais git restore
par défaut, supprimera les fichiers manquants sur otherbranch
. Pour obtenir git checkout
utilisation du comportement --overlay
option.
Par exemple, s'il y a moins de fichiers sur otherbranch
que dans le répertoire de travail actuel (et ces fichiers sont traqué ) sans --overlay
option git restore
les supprimera. Mais c'est un bon comportement par défaut, vous voulez très probablement que l'état du répertoire soit "le même comme dans otherbranch
"et non "le même comme dans otherbranch
mais avec des fichiers supplémentaires de ma branche actuelle".
Pour obtenir le même résultat que pour git checkout otherbranch -- path/to/dir
vous pouvez écrire git restore --source otherbranch --staged --worktree --overlay path/to/dir
-
git restore
n'utilise pas la redirection du shell pour créer le fichier (problème réservé à Powershell)
git show otherbranch:path/to/myfile.txt > path/to/myfile.txt
utilise la redirection standard du shell. Si vous utilisez PowerShell, il se peut qu'il y ait un problème avec l'encodage du texte ou que vous obteniez un fichier cassé s'il s'agit de binaire . Avec git restore
La modification des fichiers est entièrement effectuée par le git
exécutable.
9 votes
Veuillez noter que dans la réponse acceptée, la première solution met en scène les changements, et la deuxième solution ne le fait pas. stackoverflow.com/a/56045704/151841
1 votes
La réponse la plus récente est
git restore --source otherbranch path/to/myfile.txt
(voir l'explication dans la réponse ).