Предполагаю, что у меня есть ветки o1
o2
o3
.Объединить несколько ветвей в одну
Все они имеют несколько фиксаций, были сделаны все коммиты в o1
перед тем o2
, которые были сделаны до того o3
, и т.д ...
Я хочу создать филиал d1
, который содержит все коммиты o1
, o2
, o3
и неиспользованный. То есть тот же идентификатор хеширования. Вы можете предположить, что они не конфликтуют друг с другом.
Основная цель заключается в том, что если они объединяются в другое место в проекте, то не обнаруживаются повторяющиеся фиксации (2 разных фиксации с теми же изменениями).
Я озадачен, пытаясь сделать это, потому что git merge
удаляет ветвь после слияния, и это единственное, что я мог придумать, и вишневый выбор (если бы я понял правильно), похоже, не подходит вариант.
Знаете ли вы, что в Git ветка является «указателем» на фиксацию? Основываясь на вашем описании (* Они все имеют несколько коммитов, где все совершаются в o1, были сделаны до o2, которые были сделаны до o3 и т. Д. *), Вы могли бы просто объединить три старых ветви в самую последнюю, используя ускоренную перемотку вперед сливается. – Jubobs
Я не уверен, но я думаю, что вы делаете «...' d1' со всеми коммитами из 'o1' ... intact, т. Е. Тот же хэш ...» не имеет смысла. В Git хеш фиксации включает историю, если вы создаете ветку с другим контентом/историей, хеш изменится. –
Какая ветка удаляется 'git merge'? Что вы пробовали, точно? Что-то вроде 'git checkout -b d1', затем' git merge o1 o2 o3 o4'? – coredump