2014-05-09 2 views
3

Если я создаю новую ветку, сделаю несколько коммитов, а потом решим: «Ничего себе, я ничего не сделал здесь хорошо», и я удаляю ветку (git branch -d branchname), чтобы эти несколько коммитов тоже ушли? Как, они исчезают из моего журнала?Если вы удаляете ветку git, это значит, что это происходит с ней?

+0

Спасибо за подробные ответы! – Costa

ответ

3

Коммиты не будут отображаться в git log больше, если ни одна ветка не ссылается на них, но они будут некоторое время, чтобы предотвратить случайную потерю работы. Есть несколько уровней безопасности:

  • Обязуется не только когда-либо считается для сбора мусора, если они больше не ссылки. Обычно это происходит, если только одна ветка/ref имеет ссылку на них, и вы удаляете этот ref.
  • Если не настроено по-разному, Git сохраняет журнал старых состояний ветви («reflog»). Записи Reflog истек в конечном итоге с учетом настраиваемого возрастного порога (два: на самом деле: один для записей reflog, который содержит материал, доступный из текущего состояния ветви, и один для материала, который больше не доступен из ветки; по умолчанию для последний - 30 дней). До этого git gc сохранит ваши записи reflog и не удалит транзакции, которые могут быть достигнуты через эти записи reflog.
  • Даже если вы принудительно очистите свои рефлоги, git gc все равно сохранит объекты, если они были созданы менее двух недель назад (по умолчанию это настраивается).
  • После этого все объекты физически удаляются при запуске git gc.

Для просмотра рефлогов попробуйте git log -g SOMEBRANCH.

3

Да, они исчезают из журнала git, и нет, они не исчезают из репозитория до следующей команды git gc (сборщик мусора).

Вы все еще можете найти эти коммиты, используя команду git reflog.

Смежные вопросы