Я б використовував git restore(доступно з git 2.23)
git restore --source otherbranch path/to/myfile.txt
Чому це краще, ніж інші варіанти?
git checkout otherbranch -- path/to/myfile.txt- Він копіює файл у робочий каталог, але також у область інсценізації (аналогічний ефект, як якщо б ви копіювали цей файл вручну та виконувались git addна ньому). git restoreне торкається області постановки (якщо не вказано це за --stagedопцією).
git show otherbranch:path/to/myfile.txt > path/to/myfile.txtвикористовує стандартне перенаправлення оболонки. Якщо ви використовуєте Powershell, то може виникнути проблема із вкладенням тексту або ви можете отримати зламаний файл, якщо він є двійковим . Зі git restoreзміною файлів все виконується gitвиконуваним файлом.
Ще одна перевага полягає в тому, що ви можете відновити всю папку за допомогою:
git restore --source otherbranch path/to
або з, git restore --overlay --source otherbranch path/toякщо ви хочете уникати видалення файлів. Наприклад, якщо файлів менше, otherbranchніж у поточному робочому каталозі (і ці файли відслідковуються ), без --overlayможливості git restoreбуде видалено їх. Але це добре поведінка за замовчуванням, ви, швидше за все, хочете, щоб стан каталогів був таким самим, як у otherbranch, а не "те саме, але з додатковими файлами в моєму поточному відділенні"