В будущем вы должны были создать ветку для работы
git branch branchName version52
git checkout branchName
или
git checkout -b brannchName version52
Отредактировано после комментария
Модель объектов git, о которой я писал здесь , просто отслеживает дерево объектов. Ветвь - это указатель на коммит. Хотя оба они связаны, вам не нужно иметь ветку, указывающую на конец строки коммитов.
Когда вы создаете коммит, вы все равно создаете дерево объектов, которые будут существовать в хранилище, пока оно не станет старым, и вы запустите git-gc, чтобы очистить эти осиротевшие коммиты. Я думаю, что вас беспокоит то, что в ветке нет обязательных требований для коммитов. Это создает гибкость в инструменте, который иногда ловит пользователей, но git - продвинутый инструмент.
В вашем случае вы сделали коммит, а затем вернулись в свою основную ветку и думали, что потеряли свои коммиты, но если бы вы посмотрели на вывод git reflog
, вы бы увидели ша кома, который вы создали, даже хотя это не было на ветке. Вы могли бы создать здесь ответвление git branch branchName <sha of commit>
. Или вы могли бы объединить или перебазировать эти коммиты с / на другую ветку, не пройдя дополнительные шаги по созданию и удалению ветки только для этого. Итак, это всего лишь несколько дополнительных шагов, всего несколько нажатий клавиш; но это полезно в некоторых случаях.
Дело в том, что ветвь - это всего лишь сокращение от дерева коммитов, так же как тег - это сокращение от конкретного коммита. За исключением того, что когда вы делаете коммиты на ветке, указатель ветки перемещается вместе с последним коммитом.
Всегда есть указатель head
, который указывает на последнюю фиксацию, которую вы извлекли, поэтому вы никогда не будете действительно «отключены»