Это зависит от того, что вы хотите сделать, когда проверяете этот коммит. Если все, что вы делаете, это проверяете, чтобы вы могли собрать или протестировать эту ревизию, тогда нет ничего плохого в работе с отсоединенной головкой. Просто не забудьте проверить фактическую ветку, прежде чем делать какие-либо коммиты ( git checkout masterнапример), чтобы вы не создавали коммиты, которые не включены ни в одну ветку.
Однако, если вы хотите сделать больше коммитов, начиная с этого момента, вам следует создать ветку. Если вы делаете коммиты, на которые не ссылается ветка, они могут легко потеряться и в конечном итоге будут очищены сборщиком мусора git, поскольку на них ничего не ссылается. Вы можете создать новую ветку, запустив:
git checkout -b newbranch ea3d5ed
Чтобы наглядно представить себе, вот несколько диаграмм, демонстрирующих, чем работа с отделенной головой отличается от работы над веткой.
Давайте начнем с 3 коммитов master, A, B и C. master- это текущая ветвь, поэтому HEADуказывает master, что указывает на фиксацию C.
ABC
* - * - * <- master <- HEAD
Теперь, если мы зафиксируем, git создаст фиксацию, у которой C в качестве родителя (потому что это текущая фиксация, на которую указывает HEADпереход master), и обновится, masterчтобы указать на эту новую фиксацию. Все наши коммиты уже выполнены masterи HEADуказывают на новую фиксацию master.
ABCD
* - * - * - * <- master <- HEAD
Теперь давайте проверим B, дав нам отдельный HEAD.
ABCD
* - * - * - * <- мастер
^
\-- ГОЛОВА
Здесь все отлично работает; мы можем просмотреть все файлы, построить нашу программу, протестировать ее и т.д. Мы даже можем создавать новые коммиты; но если мы это сделаем, то у нас не будет ветки, поэтому мы не сможем указать какую-либо ветку на этот новый коммит. Единственное, что на это указывает HEAD:
ABCD
* - * - * - * <- мастер
\
* <- ГОЛОВА
E
Если позже мы решим проверить еще masterраз, там не будет ничего, относящегося к E.
ABCD
* - * - * - * <- master <- HEAD
\
*
E
Поскольку на него ничего не ссылается, его может быть сложно найти, и git считает, что коммиты без ссылок должны быть оставлены (они случаются довольно часто, если вы переустанавливаете, или выжимаете патчи, или выполняете другие забавные манипуляции с историей; они обычно представляют собой заброшенные патчи что вас больше не волнует). По прошествии определенного времени git будет считать его мусором, который будет удален при следующем запуске сборки мусора.
Итак, вместо того, чтобы проверять голую ревизию и получать отдельную голову, если вы чувствуете, что собираетесь сделать больше коммитов, вам следует использовать git checkout -b branch Bдля создания ветки и проверки ее. Теперь ваши коммиты не будут потеряны, так как они будут включены в ветку, на которую вы можете легко ссылаться и объединить позже.
ABCD
* - * - * - * <- мастер
^
\ - ветка <- HEAD
Если вы забудете это сделать и создадите коммиты в ветке, не о чем беспокоиться. Вы можете создать ветку, ссылающуюся на головную ревизию, с помощью git checkout -b branch. Если вы уже переключились обратно в masterветку и понимаете, что забыли случайную фиксацию, вы можете найти ее с помощью git reflog, которая покажет вам историю того, на что коммиты HEADуказали за последние несколько дней. Все, что все еще находится в журнале ссылок, не будет собираться мусором, и обычно ссылки хранятся в журнале ссылок не менее 30 дней.