@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"

Как сделать? ( Не заливая проект заново)
  • Вопрос задан
  • 3224 просмотра
Решения вопроса 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
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы