Как скопировать версию одного файла из одной ветки git в другую?

StackOverflow https://stackoverflow.com/questions/307579

Вопрос

У меня есть две ветки, которые полностью объединены.

Однако после завершения слияния я понимаю, что один файл был испорчен слиянием (кто-то другой сделал автоформат, хах), и было бы проще перейти на новую версию в другой ветке, и затем повторно вставьте мое изменение в одну строку после переноса его в мою ветку.

Итак, какой самый простой способ сделать это в git?

Это было полезно?

Решение

Запустите это из ветки, в которой вы хотите, чтобы файл оказался:

git checkout otherbranch myfile.txt

Общие формулы:

git checkout <commit_hash> <relative_path_to_file_or_dir>
git checkout <remote_name>/<branch_name> <file_or_dir>

Некоторые примечания (из комментариев):

  • Используя хеш коммита, вы можете извлечь файлы из любого коммита.
  • Это работает для файлов и каталогов
  • перезаписывает файл myfile.txt и mydir
  • Подстановочные знаки не работают, но относительные пути работают.
  • Можно указать несколько путей

альтернатива:

git show commit_id:path/to/file > path/to/file

Другие советы

Я попал на этот вопрос в похожем поиске. В моем случае я искал, чтобы извлечь файл из другой ветви в текущий рабочий каталог, который отличался от исходного местоположения файла. Ответ :

git show TREEISH:path/to/file >path/to/local/file

Как насчет использования команды извлечения:

  git diff --stat "$branch"
  git checkout --merge "$branch" "$file"
  git diff --stat "$branch"

После ответа madlep вы также можете просто скопировать один каталог из другой ветки с помощью большого двоичного каталога.

git checkout other-branch app/**

Что касается вопроса опера, если вы изменили там только один файл, то это будет нормально ^ _ ^

1) Убедитесь, что вы находитесь в филиале, где вам нужна копия файла. Например: я хочу файл подветвления в master, поэтому вам нужно оформить заказ или он должен быть в master git checkout master

2) Теперь извлеките только один конкретный файл из дочерней ветви в master,

git checkout sub_branch file_path/my_file.ext

здесь sub_branch означает, где у вас есть этот файл, за которым следует имя файла, которое нужно скопировать.

scroll top