Коммит сброса GIT показывает изменения вперед/назад

В нашем проекте с использованием веток master и develop фиксация сделана непосредственно на master (всего три файла, и эти изменения тоже на ветке develop).

Теперь мне нужно объединить разработку с мастером, но я не могу, так как история для мастера теперь «не пересекается» с разработкой, и я получаю следующую ошибку: fatal: refusing to merge unrelated histories.

Я сделал reset commit hard на мастере, так как не хочу локально сохранять изменения последней фиксации, поскольку они уже находятся в разработке. Однако после возврата локальная основная ветвь опережает на 600 изменений и отстает на 1066.

Почему такое количество изменений? Я ожидаю, что локальная ветка master совсем не отстает, так как возврат перемещает указатель на предыдущую фиксацию.

Считает ли он все предыдущие push/pull, сделанные на основной ветке с самого начала (выполняя pull, я все равно получаю ошибку fatal: refusing to merge unrelated histories)?

Ожидаемый/желаемый результат будет состоять в том, чтобы вернуться к одной фиксации на мастере, когда эта ветвь все еще находилась в строке истории разработки, что позволило бы мне объединить их. введите здесь описание изображения


person Francesco    schedule 09.03.2017    source источник
comment
Reset перемещает указатель, revert создает новую фиксацию. Какой из них вы сделали?   -  person 1615903    schedule 09.03.2017
comment
Я сделал возврат (вернул текущую ветку к этой фиксации, используя sourceTree)   -  person Francesco    schedule 09.03.2017
comment
Не могли бы вы показать скриншот графика коммитов, показанный SourceTree?   -  person mkrieger1    schedule 09.03.2017
comment
Какую версию Git вы используете?   -  person mkrieger1    schedule 09.03.2017
comment
Несвязанные истории означают, что ваша текущая ветка и другая ветка вообще не имеют общих коммитов. Обычно это результат объединения несвязанных репозиториев или запуска git filter-branch до корневого коммита.   -  person torek    schedule 09.03.2017
comment
Добавил скриншот. Использование git версии 2.10.1.windows.1   -  person Francesco    schedule 09.03.2017
comment
Где находятся указатели ветвей develop и master? Показан только origin/master.   -  person mkrieger1    schedule 09.03.2017
comment
Разработка — синяя крайняя слева. Графика была бы слишком большой, если бы я включил все. Как показано на скриншоте, я не могу объединить разработку в мастере, так как последний имеет независимую фиксацию.   -  person Francesco    schedule 09.03.2017
comment
Обычно вы должны иметь возможность объединить расходящуюся ветвь с другой. В этом суть слияния. Должно быть, в вашем случае что-то пошло не так, чего мы здесь не видим.   -  person mkrieger1    schedule 09.03.2017
comment
Какую именно команду вы использовали, когда сказали, что я сделал revert commit hard на мастере? Вы действительно имели в виду reset, а не revert? Возможно, вы переместили свой (локальный) указатель ветки master на фиксацию, совершенно не связанную с develop или origin/master, что может объяснить, почему Git отказался выполнить слияние. Несмотря на то, что теперь вы нашли волшебный аргумент командной строки, разрешающий слияние, я сомневаюсь, что это привело вас к ситуации, которую вы на самом деле хотите.   -  person mkrieger1    schedule 09.03.2017
comment
Да, скорее всего, это был сброс, а не возврат, если сравнить элементы меню, показанные на первом снимке экрана, из здесь с вашим первым комментарием выше.   -  person mkrieger1    schedule 09.03.2017
comment
@ mkrieger1 mkrieger1: да, я использовал эту команду из исходного дерева, но потом вернулся и воссоздал репозиторий локально. Я обновлю свой вопрос. Проблема заключалась в том, что фиксация была сделана непосредственно на мастере, и это отличало ее от разработки. Мне пришлось использовать команду merge --allow-unrelated-histories, чтобы решить эту проблему, больше не используя сброс. Кто-нибудь может объяснить, почему с помощью сброса я получил так много различий (впереди/позади)?   -  person Francesco    schedule 09.03.2017


Ответы (1)


Я смог решить проблему с помощью команды:

git merge develop --allow-unrelated-histories

Эта «сплющенная» основная ветка позволяет мне объединить ветку разработки с основной.

person Francesco    schedule 09.03.2017