Це залежить від того, що ви хочете зробити під час оформлення замовлення. Якщо все, що ви робите, - це перевірити його, щоб ви могли створити або протестувати цю редакцію, то в роботі з відірваною головою немає нічого поганого. Просто пам’ятайте перевірити фактичну гілку перед тим, як робити будь-які коміти ( git checkout master
наприклад), щоб не створювати комітів, які не входять до жодної гілки.
Однак, якщо ви хочете зробити більше комітів, починаючи з цього моменту, вам слід створити гілку. Якщо ви робите коміти, на які не посилається гілка, вони можуть легко загубитися і в кінцевому підсумку будуть очищені збирачем сміття git, оскільки до них нічого не відноситься. Ви можете створити нову гілку, запустивши:
git checkout -b newbranch ea3d5ed
Щоб допомогти візуалізувати, ось кілька діаграм, що демонструють, чим відрізняється робота на відокремленій голові від роботи на гілці.
Почнемо з 3 комітів master
, A, B і C. master
є поточною гілкою, тому HEAD
вказує наmaster
, що вказує на комітування C.
ABC
* - * - * <- майстер <- ГОЛОВА
Тепер, якщо ми здійснимо фіксацію, git створить коміт, у якому батьківським є C (оскільки це поточний коміт, на який вказується HEAD
через via master
), і оновиться, master
щоб вказати на цей новий коміт. Усі наші коміти зараз увійшли master
та HEAD
вказують на новий коміт master
.
А Б В Г
* - * - * - * <- майстер <- ГОЛОВА
А тепер давайте перевіримо В, даючи нам відокремлений HEAD
.
А Б В Г
* - * - * - * <- майстер
^
\-- ГОЛОВА
Тут все працює чудово; ми можемо переглянути всі файли, створити нашу програму, протестувати її тощо. Ми навіть можемо створювати нові коміти; але якщо ми так зробимо, немає жодної гілки, на якій ми перебуваємо, тому ми не можемо вказувати жодної гілки на цей новий коміт. Єдине, на що вказує HEAD
:
А Б В Г
* - * - * - * <- майстер
\
* <- ГОЛОВА
Е
Якщо пізніше ми вирішимо перевірити ще master
раз, нічого, що стосується E.
А Б В Г
* - * - * - * <- майстер <- ГОЛОВА
\
*
Е
Оскільки на це нічого не посилається, знайти його може бути важко, і git вважає, що коміти, у яких немає посилань, можна відмовитись (вони трапляються досить часто, якщо ви перебазуєте або вкладаєте патчі або виконуєте інші цікаві маніпуляції з історією; вони зазвичай представляють покинуті патчі що вам більше не все одно). Через певний проміжок часу git вважатиме це сміттям, яке буде відкинуто під час наступного запуску збору сміття.
Отже, замість того, щоб перевіряти оголену версію та отримувати відірвану голову, якщо ви відчуваєте, що збираєтеся робити більше комітів, вам слід використати git checkout -b branch B
для створення гілки та перевірки її. Тепер ваші коміти не будуть втрачені, оскільки вони будуть включені до гілки, до якої ви можете легко звернутися та об'єднати пізніше.
А Б В Г
* - * - * - * <- майстер
^
\ - гілка <- ГОЛОВА
Якщо ви забудете це зробити і створите коміти з гілки, не потрібно турбуватися. Ви можете створити гілку з посиланням на версію головки за допомогою git checkout -b branch
. Якщо ви вже повернулися до master
гілки і зрозуміли, що забули помилковий коміт, ви можете знайти його за допомогою git reflog
, який покаже вам історію того, на що HEAD
вказували коміти за останні кілька днів. Все, що все ще є у перегляді, не буде зібраним сміттям, і, як правило, посилання зберігаються в перегляді принаймні 30 днів.