Я думаю , что вы на самом деле просите, сводится к: «если я сделаю git branch -d old_homepage
потеряет ли коммиты», и ответ: «Удаление имени удаляет только имя ; сами коммиты остаются до тех пор, пока вы можете видеть их в git log --all
, а на самом деле даже дольше. "
Чтобы лучше это представить, запустите что-то вроде gitk --all
или gitk --tags
(попробуйте оба на некоторых сложных репозиториях git).Прокрутите коммиты.Теперь представьте себе, что вы делаете заметку на любом коммите.Это имя тега или ветви.Сними записку.Коммит еще там, верно?: -)
Остается один очевидный вопрос: когда такие вещи, как коммиты на самом деле уходят?Ответ таков: только после удаления всех имен, которые к ним приводят.Команда gitk
(как и большинство других команд git) начинается с имени HEAD
.Если вы дадите ему --all
, он добавит все имена ветвей, которые сможет найти.Если вы дадите ему --tags
, он добавит все имена тегов, которые сможет найти.Затем он работает в обратном направлении, просматривая каждый коммит, чтобы увидеть, на какие другие коммиты он ссылается.
Git удаляет вещи (коммиты и т. Д.), Когда нет способа найти их, начиная с одного из этих очевидныхимена и работа в обратном направлении.(Даже тогда он ждет долго, от 30 до 90 дней по умолчанию.) Таким образом, если вы добавите метку ветки или тега к старому коммиту, номер которого вы нашли, например, с помощью git log
, это даст вам новое очевидное имядля этого номера коммита;но удаление снова безопасно, если это не только способ найти его по имени.