@Solenoid2200

Как победить detached HEAD state?

Описание проблемы: Два прогера (Петя и Вася) начали делать один и тот же проект (project2018wm) каждый своим способом. Каждый делает свои коммиты в свой репозиторий на Github. Когда сделали по 10 коммитов, посовещались и решили что вариант Васи предпочтительнее, за исключением последних двух коммитов.

Вопрос: Как Пете сделать чтобы он своим следующий коммитом (11-м) сделал состояние своего репозитория на гитхабе идентичным состоянию проекта Васи после его 8 коммита?

Я (Петя ) пробовал так: 1. Удалил свой проект локально усебя на компе. 2. Клонировал проект Васи с гитхаба себе на комп. 3. git checkout хэш_8_го_коммита_Васи 4. Теперь у меня все файлы проекта как у Васи после 8 коммита 5. git remote set-url origin url_на_репозиторий_Пети.git

Ну и дальше в IDEA при попытке: VCS --> Commit... --> Commit and push... получаю сообщение "The Git repository C:\project2018wm is in the detached HEAD state"

Как сделать? ( Не заливая проект заново)
  • Вопрос задан
  • 3542 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Я (Петя ) пробовал так:
1. Удалил свой проект локально усебя на компе.
2. Клонировал проект Васи с гитхаба себе на комп.
3. git checkout хэш_8_го_коммита_Васи

Вот в этот момент случился detached HEAD.

5. git remote set-url origin url_на_репозиторий_Пети.git

Не нужно, т.к. шаг 2 уже это сделал.

Как сделать?

Зависит от того, как вы решите поступить с историей. Есть несколько вариантов:
- выкинуть два ненужных коммита совсем и переписать историю начная с этого места. Для этого на шаге 3 нужно было сделать git reset --hard хэш_8_го_коммита_Васи, а при пуше в репозиторий пушить с ключом -f

- откатить два ненужных коммита, оставив их в истории. Для этого на шаге 3 нужно было сделать
git revert хэш_10_го_коммита; git revert хэш_9_го_коммита


- родить новую ветку от 8-го коммита и разрабатывать дальше в ней. Для этого на шаге 3 нужно было сделать
git checkout хэш_8_го_коммита_Васи -b имя_новой_ветки


Ну и дальше в IDEA при попытке: VCS --> Commit... --> Commit and push... получаю сообщение "The Git repository C:\project2018wm is in the detached HEAD state"


В вашем текущем состоянии я бы сделал следующее:
git stash
git checkout master # или имя ветки в которой были 8 хороших коммитов
действия из выбранного варианта из перечисленных выше
git stash pop
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы