2016-07-10 4 views
5

Я заметил .git/log во время поиска, где git сохраняет фиксации запятой. Установлено, что:Какова цель .git/log

$ ls .git/logs/ 
HEAD  refs 
$ diff .git/refs/ .git/logs/refs/ | head -n3 
Common subdirectories: .git/refs/heads and .git/logs/refs/heads 
Common subdirectories: .git/refs/remotes and .git/logs/refs/remotes 
diff .git/refs/stash .git/logs/refs/stash 

Значение stash - это единственный уникальный файл под logs. Но это не проливает свет на обоснование этой папки. Итак, какова цель .git/log и почему ссылки на дубликаты дубликатов?

ответ

1

журналов отчетов об изменениях, внесенных в реф, хранится в этой директории. См. Git-update-ref 1 для получения дополнительной информации. Этот каталог игнорируется, если задано $ GIT_COMMON_DIR и вместо него будет использоваться «$ GIT_COMMON_DIR/logs».

Ссылка: gitrepository-layout

1

Это «рефлоги», которые записывают историю того, как в прошлом указывали различные ссылки в вашем хранилище.

См. git help reflog и документация для -g, --walk-reflogs в git help log.

Если вы запустили diff -r, вы увидите гораздо больше отличий, так как файлы refs/ содержат один фиксатор и logs/refs содержат файл истории.

Обратите внимание, что поиск каталога refs/, в общем, не является хорошим способом поиска ссылок в вашем репозитории. Также как «свободные», ref могут также существовать только в packed-refs и не иметь соответствующей записи в каталоге refs/.

1

В каталоге logs находится Git reflogs. В Reflogs указывается, на что указывают ваши ссылки в какой-то более ранний момент времени. Reflogs сохраняет исходный коммит даже после git commit --amend, git rebase и т. Д. Reflogs хранит один фиксат даже после того, как git pull тянет десятки коммитов. Reflogs упрощают отмену определенных операций.

Это нормально, что для всех рефлексов существует все, что у вас есть, и все ссылки, которые вы имели в недавнем прошлом. У вас был stash ref в какой-то момент, используя команду git stash. Даже если у вас больше нет этой ссылки, reflog помнит. Это позволяет, например, отменить случайное удаление ветви.

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