Сюжет: у меня есть локальные develop
и master
филиалы. develop
имеет около 90 коммитов перед master
, порожденным ~ 6 месяцев назад.
Я выполнил команду git filter-branch -f --index-filter 'git rm --force --cached --ignore-unmatch media/*' -- --all
, которая переписала больше истории git, чем я ожидал, на обоих ветви. Это, из-за того, что делает команда, фактически сделало gazillion git операций, что оставило мой git reflog
бесполезным.
Я легко восстановил ветвь master
простым git reset --hard origin/master
, но мой develop
ветвь в очень плохой форме.
Теперь, очевидно, хэши коммитов между master
и develop
не совпадают, что заставляет git думать, что у меня есть gazillion коммитов в pu sh и gazillion совершает перетаскивание из / в мой remote/develop
(должно быть 0 коммитов для вытащения, ~ 90 коммитов в pu sh)
Есть ли способ, которым я могу сделать git "примирить" все коммиты от master
и develop
? Это должно быть что-то вроде:
for commit in commits_in_master:
tmp = search_by_commit_autor_and_date_and_message_in_develop(commit)
tmp.hash = commit.hash
tmp.save()
Редактировать:
Если то, что я спрашиваю, невозможно, могу ли я (как-то) извлечь только ~ 90 коммитов, которые не были переданы origin/develop
, затем git reset --hard origin/develop
моя develop
ветвь и затем применить эти ~ 90 коммитов?