Veuillez noter que dans la réponse acceptée, la première option étapes le fichier entier de l'autre branche (comme git add ...
a été effectuée), et que la deuxième option a pour seul résultat de copier le fichier, mais ne met pas en scène les modifications (comme si vous aviez juste édité le fichier manuellement et que des différences subsistaient).
Git copie un fichier d'une autre branche sans le mettre en scène
Des changements échelonnés (par exemple git add filename)
:
$ git checkout directory/somefile.php feature-B
$ git status
On branch feature-A
Your branch is up-to-date with 'origin/feature-A'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: directory/somefile.php
Changements en cours (pas de mise en scène ni d'engagement) :
$ git show feature-B:directory/somefile.php > directory/somefile.php
$ git status
On branch feature-A
Your branch is up-to-date with 'origin/feature-A'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: directory/somefile.php
no changes added to commit (use "git add" and/or "git commit -a")
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 ).