2014-02-10 6 views
3

Что такое краткий способ запросить «вишневый выбор из другой ветви только коммитов, которые касаются определенного файла»? то есть команда git log ..other-branch afile дает список несвязанных коммитов в другой ветке, которые касаются «файла»; как я могу попросить повторить этот же набор коммитов в текущей ветке?Cherry pick только фиксирует то, что касается конкретного файла

+0

Не можете ли вы просто объединиться в последнее совершение, касающееся соответствующего файла? – dezman

+0

@watson Я не могу этого сделать, потому что это тоже объединит множество коммитов, которые я не хочу объединять. Я хочу только внести изменения из небольшого подмножества коммитов, которые касаются одного файла. – gcbenison

+0

Я не думаю, что то, что вы хотите, возможно, вам придется либо захватить только один файл, все, начиная с последней фиксации, которая изменила этот файл, или какой-то захват файлов из последней фиксации, которую вы думаете имеют значение. – dezman

ответ

3

git cherry-pick $(git log --reverse --pretty=format:"%H" filename)

Если сделать трюк. git log --reverse --pretty=format:"%H" filename в основном дает вам список символов SHA всех строк, которые изменили filename в обратном порядке, чтобы сумма слияния в правильном порядке. Затем мы подаем список на git cherry-pick.

git cherry-pick $(git rev-list --reverse HEAD -- filename) - другая версия вышеуказанной команды, предоставленная Магнусом Бэком.

+0

", а затем sed заменяет все \ n (новые строки) на пробелы "- вам это не нужно. Пока IFS имеет значение по умолчанию, новая строка и пробелы ведут себя одинаково в некотируемом расширении $ (...). – hvd

+0

Я закончил тем, что использовал такую ​​конструкцию - мне все еще интересно, есть ли способ сделать это, что не связано с интерполяцией команды bash. Я предполагаю, что это не достаточно распространенная потребность ... – gcbenison

+0

Ну никогда не пробовал это без части sed и не имел тестового примера, поэтому я не хотел публиковать что-то, что я раньше не тестировал. – Learath2

 Смежные вопросы

  • Нет связанных вопросов^_^