Предположим, что у меня есть ветвь mainline и ветвь функции. Я много раз объединял ветвь mainline в ветку признаков, но у меня было только несколько очень незначительных конфликтов слияния. Я хочу очистить историю, чтобы в конце было только одно слияние. Каков наилучший метод для этого?Объединение объединяется в одно слияние
ответ
Вы изучали git rebase
?
git co -b temp_feature feature
git rebase master
Это должно игнорировать слияния, но вам придется повторно разрешать конфликты. Он также создает ветку temp_feature для более легкого возврата, но то же самое можно было бы сделать с помощью reflog.
(Неправильный ответ ниже: это позволит создать одну фиксацию, ни одного объединения: - /)
Я думаю, что проще всего сделать следующее:
git co master
git merge --squash feature
Это позволит создать одну фиксацию от всей ветви функции. Если вы не хотите, чтобы ветвь функции сделать:
git branch -D feature
Вы можете сделать интерактивный Rebase для достижения этой цели, но вы должны делать это только если вы еще не поделился, что история с кем-то еще. На практике это означает, что вы должны сделать это только в том случае, если вы не сделали git push
для общего репо.
Похоже, что вы хотите, чтобы cherrypick non-merge фиксировал ветку функции в ветви чистой функции, а затем, наконец, объединил ветвь чистой функции с последним мастером (что бы это ни было). Вы можете использовать rebase для ускорения части этого вишневого рисунка, который, к сожалению, я не знаю о хорошем способе сделать в jiffy, так как это не то, что я делаю очень часто. Это поможет, если у вас есть gui, который позволяет вам выбрать несколько коммитов, которые будут черрипироваться сразу.
Edit: Это было бы более конкретное решение: How to cherry pick a range of commits and merge into another branch
- 1. Слияние/объединение двух структур
- 2. MySQL слияние/объединение?
- 3. Объединение/слияние массивов в C#
- 4. Объединение/слияние массивов в php
- 5. Объединение векторов в одно число
- 6. Объединяется ли объединение каждый раз в этой реализации слияния
- 7. Слияние и объединение массивов в PHP
- 8. Слияние/объединение двух операторов выбора в один
- 9. Слияние и объединение двух массивов в PHP
- 10. Слияние SVG и .JPG в одно изображение?
- 11. MySQL объединяется - объединение таблицы категорий с таблицей данных
- 12. Объединение анимаций на одно свойство
- 13. JavaScript объединяется с несколькими путями?
- 14. Team Foundation Server не объединяется
- 15. Быстрое объединение анимаций в одно с завершением
- 16. Объединение нескольких строк в одно утверждение?
- 17. Объединение полей адреса в одно поле
- 18. Объединение пузырьковых событий в одно событие
- 19. Объединение нескольких изображений в одно изображение
- 20. Объединение нескольких изображений в одно изображение
- 21. Угловое объединение нескольких полей в одно поле
- 22. Python: объединение нескольких списков в одно предложение
- 23. Таблица перекрестных таблиц объединяется в Drupal?
- 24. Слияние двух списков и объединение значений объектов
- 25. Слияние или объединение размеров многомерного массива
- 26. Bash - объединение (слияние) файлов по столбцам
- 27. Слияние/объединение двух отдельных алгоритмов графов?
- 28. Объединение карты глубины или слияние Point Cloud
- 29. Объединение (слияние) Несколько строк с использованием AWK
- 30. Слияние повторяющихся строк, которые имеют одно значение
Когда вы говорите, очистить историю, вы должны быть более конкретными. Если вы хотите удалить слияния из mainline в функцию, вам нужно решить, как вы хотите, чтобы ветвь функции выглядела с удалением этих объединений. Например, если какая-либо работа в ветви функции зависит от изменений, сделанных в mainline (и впоследствии объединенных в ветви функций), удаление слияний приведет к тому, что ваша ветка свойств больше не будет скомпилирована, потому что она зависит от кода, который был удален. –
@KevinBallard: Это действительная точка. В некоторых случаях вам может понадобиться сдвинуть ветвь. Я не слишком обеспокоен этим, хотя для этого вопроса я просто хочу убедиться, что ветвь только сливается назад – Casebash