Я бы использовал 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
, а не "то же самое, но с дополнительными файлами в моей текущей ветке"