объединить изменения в одном файле из нескольких ветвей

#git

#git

Вопрос:

У меня есть репозиторий git с двумя расходящимися ветвями, production и v2. Я работаю над третьей веткой с сотрудником, с которым мы объединяемся, под названием prod-merge. Идея в том, что версия v2 содержит множество обновлений функций, а производство представляло собой серию исправлений / исправлений ошибок.

Итак, теперь v2 должен быть более или менее каноническим, но мне нужно объединить изменения из моей производственной ветки.

Мы с моим сотрудником разделили рабочий процесс таким образом, что я отвечаю за объединение пространства имен foo, а он отвечает за слияние в пространстве имен bar. Другими словами, я отвечаю за слияние в производственной ветке, файле foo.rb. Для каждого из нас есть несколько файлов.

Я играл с diff, merge, patch и am, не найдя действительно надежного рабочего процесса. Я бы хотел трехстороннее слияние, чтобы убедиться, что я ничего не пропустил, а затем зафиксировал это слияние. Какое самое простое решение, которое могло бы сработать?

спасибо, Брайс

Комментарии:

1. Почему бы просто не объединить ветку с git merge <branch> ? Похоже, что каждая ветвь в любом случае редактирует только свое собственное пространство имен

2. Мне не обязательно нужна вся ветка, в большинстве случаев мне нужен только один или два файла.

3. Для этого есть решения ( checkout --theirs vs --ours vs --conflict ), но лучше, если ветка изменяет только файлы, которые она должна изменить. Что происходит с другими изменениями? Это похоже на то, что мог бы исправить лучший рабочий процесс.

Ответ №1:

должен быть лучший способ, но я обнаружил, что это просто трюк:

git format-patch --stdout feature..master -- app/controllers/feeds_controller.rb > ~/Desktop/feeds.patch

git am -3 -i --ignore-date ~/Desktop/feeds.patch

Ответ №2:

У нас много очень сложных ветвей, сценариев владения ветвями и т. Д. Я задокументировал подход здесь. Надеюсь, это даст вам несколько хороших идей.

https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR