Почему я не могу просто откатится в определенному коммиту в git?

Для этого пишу git checkout commit на что мне выдает типа создай ветку.
prntscr.com/bk847p
Нашел такое решение.

Аналогичная ситуация и решение.
Может кому-то, кто придет сюда из поиска это будет полезно.

Честно говоря разбираться в дебрях терминов «застешить», «unstage», и осваивать приемы прыжков через коммиты не хотелось.

Действительно когда делаешь

git checkout идентификатор_коммита
дальнейшие коммиты, как оказалось лепятся к нему вне какой либо ветки, даже если вы сделали checkout на самый свой последний коммит (я например ожидал что вернувшись на него, все действительно вернется на круги своя).
Эти коммиты висят как-бы в неименованой новой ветке, в своего рода межветочном пространстве. И само собой все попытки запушить изменения командой

git push origin ваша_обычная_ветка
не дадут ожидаемого вами результата. С вашей веткой все впорядке, и с изменениями тоже, просто все те коммиты которые сделаны после ваших манипуляций с откатами надо влить в вашу основную ветку.
Самый понятный и простой способ, проименовать текущее состояние (текущую цепочку коммитов) новой веткой.

git checkout -b tempname
Затем вернуться в вашу родную ветку
git checkout ваша_обычная_ветка
и слить изменения из созданной ветки

git merge tempname
(так как в гите все с чем вы работаете это изменения, то ветка tempname - это и есть только лишь ваши изменения, отсюда интуитивная понятность метода).

остается только удалить временную ветку, дабы не засорять реп.

git branch -d tempname
И можно пушить.


Но показывает то же самое. Решил первый раз вернуться к определенному месту и тут такое. Почему так все усложнено? Почему нельзя все сделать просто. Зачем что то мутить с ветками? Какое есть нормально решение?
  • Вопрос задан
  • 683 просмотра
Решения вопроса 2
delphinpro
@delphinpro
frontend developer
HEAD is now at - вы откатились. Но если будете комитить новые изменения, вам нужно будет создать новую ветку в этом месте, иначе куда комитить?
Чтобы создать ветку (сразу или позже пред коммитом) используйте команду git checkout -b

Вообще стоит почитать это https://git-scm.com/book/ru/v1 Там все расписано для начинающих.
Ответ написан
Комментировать
@abcd0x00
Решил первый раз вернуться к определенному месту и тут такое. Почему так все усложнено?

Когда ты перешёл через checkout на коммит, то это просто текущий указатель (HEAD) переставился на тот коммит, но вся история-то осталась той же самой. Дальше ты его переставишь куда-нибудь - и он точно так же переставится туда. А как ты запомнишь, где он был до перестановки? Он не запоминает. Поэтому он тебя предупреждает, что сделай ветку, а то при какой-нибудь перестановке потеряешь это место.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
VGrabko
@VGrabko
Golang, Php, Js
я юзаю gut gui и там всё это довольно просто. (да да. Кидайте камни)
Ответ написан
Ваш ответ на вопрос

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

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