Я б використовував 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
, а не "те саме, але з додатковими файлами в моєму поточному відділенні"