Как перегрузить мою ветку свойств в ветку развития в git с наименьшими возможными конфликтами?
У меня есть ветвь моей функции, которая превысила около 30 или более баллов. Между тем в отделе развития несколько других функций были отброшены у других разработчиков. Поэтому каждый раз, когда публикуется новая функция для разработки, меня спрашивают:
- Разверните ветвь разработки на моей ветке свойств.
- Устранение конфликтов, если есть
- Продолжайте развиваться в своей ветке функций.
Проблема
Второй шаг - это куриная шея. При перезагрузке это дает мне конфликт для каждого фиксации этой ветки. Это действительно итеративно и избыточно. Обратите внимание: я не могу всегда переустанавливать ветвь разработки сразу же после того, как моя собственная работа в моей ветке продолжается.
Что я пробовал?
- В
squash
и максимально уменьшите мои коммиты (но это помогает в наименьшей степени, так как в большинстве случаев нет ничего, чтобы сквош)
- В
stash
мои текущие изменения, а также перестроить разработку, а затем разблокировать мои изменения. (но здесь я тоже получаю конфликты)
- Использование
-preserve-merges
с rebase. (но все здесь кричат, что использование этого полностью обескуражено)
Итак, каков оптимальный подход при работе с перераспределением разработки на ветку функций с наименьшими конфликтами, когда сама ветвь функции имеет множество коммитов. Я свежее, и поэтому ответ с полезным объяснением (или ссылкой) будет очень полезен.
Ответы
Ответ 1
Рабочий процесс звучит (rebase).
Но конфликты не должны решаться каждый раз снова и снова.
Для этого у вас git rerere
: активируйте его (git config --global rerere.enabled true
), разрешите конфликт в последний раз (или выполните перепрограммирование вручную или использовать contrib/rerere-train.sh
), и следующая перебаза будет повторно использовать разрешение конфликтов на вашем следующая перезагрузка.
Ответ 2
Я предлагаю сохранить вашу функцию небольшим (один или два дня), а ваша ветка функций также будет небольшой.
Другим способом было бы переупаковать не каждый раз, когда что-то попадало в ветвь развития, а только иногда, или только раз перед слиянием.
Опять же вам нужно, чтобы функция была небольшой или у вас было слишком много конфликов сразу.
О вашем вопросе вы не можете свести к минимуму количество конфликтов в перестановке. Если есть конфлики, вы не можете их избежать.
Но есть один способ: git может помочь вам: я предлагаю вам включить rerere, что означает повторное использование записанного разрешения. При этом git записывает, как вы разрешаете конфликт, и в следующий раз, когда появится конфликт, разрешение будет повторно применено, так что вы обнаружите, что конфликт уже разрешен. Это ускорит ваш рабочий процесс.
Вы можете включить reerere глобально с помощью
git config --global rerere.enabled true
Ответ 3
Попробуйте git merge из ветки разработки в ветвь функции перед выполнением git rebase. Это будет более информативным на этом пути.