Отдельные головы, Удалить смещение и т. Д. - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь исправить git-репозиторий, который вышел из строя.Вот проблема.

  • Отдельная головка была создана без ветви, и в нее были сделаны коммиты, думая, что это мастер
  • Изменения, которые должны были быть в другой ветви, были внесены вреальный мастер
  • Отделенная голова была объединена с мастером

Что необходимо сделать:

  1. Удалить слияние.Я попытался сделать полный сброс к предыдущему коммиту на мастере, но в итоге он раздавил коммиты отдельной головы в ветке мастера.
  2. Если возможно, сделать отсоединенную головку и ее коммиты главной ветвью
  3. Выполнить все коммиты в мастере, после того как голова была отсоединена отдельной ветвью

На картинкениже синий - мастер, а красный - оторванная голова.

enter image description here

Вот второе изображение для справки.

enter image description here

1 Ответ

0 голосов
/ 11 октября 2018

Пока никто не клонировал ваш репозиторий, вы сможете это сделать.

Создание ветки из текущего мастера:

git branch <branch name> <commit hash for last commit on master before the merge>

Сделать мастером ветвь отсоединенной головы

git checkout master
git reset --hard <commit hash of last detached head commit before merge>

Теперь локально вы должны находиться в желаемом вами состоянии, но локальный мастер имеет другую историю, чем ваш удаленный мастер.Возможно, вам придется просто принудительно нажать его, чтобы игнорировать удаленный мастер

git push -f

Однако такие службы, как gitlab и github, по умолчанию не позволят вам сделать это.

Если у кого-то еще естьлокальный клон репозитория, это вызовет у них проблемы, проще всего будет сделать новый клон, если вы сможете общаться со всеми, кого это касается.

...