У Git гілки є лише покажчиками (посиланнями) на коміти у спрямованому ациклічному графіку (DAG) комітів. Це означає, що при видаленні гілки видаляються лише посилання на коміти, які можуть зробити деякі зобов’язання в DAG недоступними, таким чином невидимими. Але всі коміти, які були на видаленій гілці, все одно будуть знаходитись у сховищі, принаймні до тих пір, поки недоступні комітети не будуть обрізані (наприклад, використання git gc).
Зауважте, що git branch -dвідмовитись у видаленні гілки, якщо вона не може бути впевнена, що її видалення не залишить недоступних зобов'язань. Вам потрібно використовувати сильніший, git branch -Dщоб примусити видалити гілку, якщо це може залишити недоступні коміти.
Зауважте також, що недоступні комісії, якщо вони є, - це лише ті коміти між останньою підказкою видаленої гілки та будь-якою коміттю, яка об'єдналася з іншою існуючою гілкою, будь-якою позначеною коміткою або точкою розгалуження; що пізніше. Наприклад у такій ситуації:
---- O ---- * ---- * ---- / M ---- * <- майстер <- ГОЛОВА
\ /
\ -. ---- .-- / - x --- y <- видалена гілка
лише фіксує "x" і "y" стане недосяжним після видалення гілки.
Якщо ви працювали над видаленою гілкою протягом gc.reflogExpireперіоду, за замовчуванням 90 днів, у вас буде остання порада видаленої гілки, записана в рефлозі HEAD (див. git reflog show HEADАбо git log --oneline --walk-reflogs HEAD). Ви повинні мати змогу використовувати регламент HEAD для відновлення видаленого вказівника. Зауважте також, що в цьому випадку недосяжні зобов’язання лише у видаленій гілці захищатимуться б від обрізки (видалення) протягом gc.reflogExpireUnreachableперіоду, який за замовчуванням становить 30 днів.
Якщо ви не можете знайти підказку щойно видаленої гілки в рефлозі для HEAD, ви можете спробувати скористатися, git fsckщоб знайти "недоступний фіксатор <sha1>", і вивчити їх (через git show <sha1>або git log <sha1>), щоб знайти кінчик видаленої гілки.
Незалежно від того, як ви знайдете кінчик видаленої гілки, ви можете скасувати видалення або, скоріше, заново створити щойно видалену гілку за допомогою
git branch <deleted-branch> <found-sha1-id>
Зауважте, що рефлог для філії буде втрачено.
Існує також скрипт git-resurrect.sh, в contrib/якому допомагає знайти сліди кінчика гілки з вказаним іменем та воскресити (відновити).