Являются ли теги git более быстрыми, чем коммиты git?
68 просмотра
4 ответа
Я не уверен, является ли название вопроса наиболее подходящим.
У меня есть данные в текстовых файлах. Эти данные меняются / растут каждый день. Я держу каталог, содержащий эти данные, под контролем исходного кода, git. В конце каждого дня я выдаю команду:
git commit -m "EOD YYYYMMDD"
Часто мне нужно посмотреть, как выглядели данные в прошлом.
- Отличается ли использование тегов от коммитов?
- Являются ли теги более быстрыми для доступа, чем коммиты, то есть быстрее ли извлекать данный файл, как это было в EOD когда-то в прошлом, с помощью тегов, а не коммитов?
- Является ли 1 место более эффективным, чем другое? (размер моего каталога - 3Гб текста)
Ответы (4)
3 плюса
Теги указывают на коммиты. Вы не можете создать тег, если для него не указан коммит. Так что выбора здесь нет.
(Что касается пространства, тег всегда будет занимать больше места, чем тег, но теги - это просто короткие текстовые файлы, поэтому создание тысячи из них будет занимать не более пары мегабайт).
Вы, конечно, можете создать теги с именем (например) eod-20160208
после выполнения фиксации на конец дня, а затем проверить код, как это было сегодня, запустив простой git checkout eod-20160208
. Это будет проще, чем просматривать последние коммиты на тот, у которого есть соответствующее сообщение о коммите, но не намного проще, чем пропустить тег и запустить его git checkout 'master@{2016-02-08}'
.
Это подводит меня к другому вопросу: Git отслеживает дату для вас. Я не скажу, что вы используете это неправильно , потому что Git поддерживает множество различных рабочих процессов; но указание даты в сообщении фиксации немного избыточно. Если вы используете git log
, gitk
или что - то , чтобы просматривать историю совершения, дата указана прямо рядом с сообщением фиксации. Поэтому я рекомендую использовать, -m
чтобы описать сделанные вами изменения, а не указывать, когда вы это сделали. Эта стратегия помогает мне быстрее найти изменения, которые я ищу.
1 плюс
Тег git указывает на коммит; первое не имеет смысла без второго. И если вы хотите увидеть, как выглядели данные в прошлом, вы должны их зафиксировать; для этого и нужен коммит. Короче говоря, вы делаете это правильно.
Автор: David Deutsch Размещён: 08.02.2016 08:581 плюс
Если это не ясно: использование тегов не означает, что вам больше не нужно совершать коммиты. (Аннотированный) тег - это чуть больше, чем коммит с некоторой дополнительной метаинформацией, а легкий тег - буквально просто указатель на коммит (например, ветвь).
Таким образом, ответ на вопросы 3 окончательно нет.
На вопрос 2: извлечение не происходит быстрее, но если вы, например, не знаете точное содержание сообщения о коммите, вам может быть проще перечислить доступные теги и найти коммит, который вы ищете - просто потому, что их меньше.
Наконец, к вашему вопросу № 1. Опять же, теги - это просто аннотации для коммитов, которые предназначены для того, чтобы упростить поиск определенной версии ваших файлов, которая имеет для вас особое значение.
Автор: MikeMB Размещён: 08.02.2016 08:580 плюса
1. Отличается ли использование тегов от коммитов?
Нет. Теги - это всего лишь маленькая наклейка, более понятная человеку, чтобы указывать на коммит
- Являются ли теги более быстрыми для доступа, чем коммиты, то есть быстрее ли извлекать данный файл, как это было в EOD когда-то в прошлом, с помощью тегов, а не коммитов?
Нет, потому что в конце вы проверяете коммит, указанный тегом. Единственное, что играет роль во время проверки, - это то, как далеко целевой рабочий каталог находится далеко от текущего рабочего каталога (какие изменения следует применить от одного, чтобы получить другой!)
- Является ли 1 место более эффективным, чем другое? (размер моего каталога - 3Гб текста)
Теги почти готовы к размещению, но это не то место, где хранятся данные (то есть коммиты). Теги - это просто удобный способ запомнить некоторые важные коммиты, чтобы легче было их найти в будущем.
Автор: Philippe Размещён: 08.02.2016 10:48Вопросы из категории :
- git Как я могу отменить git reset --hard HEAD ~ 1?
- git Как настроить Git голый доступный по HTTP репозиторий на IIS
- git Как мне отменить неустановленные изменения в Git?
- git Как удалить локальные (неотслеживаемые) файлы из текущего рабочего дерева Git?
- git Как клонировать все удаленные ветки в Git?
- git Частичные коммиты с Subversion
- git-commit Как изменить существующие сообщения без фиксации?
- git-commit Как мне отправить исправленный коммит в удаленный репозиторий Git?
- git-commit Как отменить 'git add' перед коммитом?
- git-commit Как я могу удалить коммит на GitHub?
- git-commit Удалить конфиденциальные файлы и их коммиты из истории Git
- git-commit Как мне отменить последние локальные коммиты в Git?
- git-tag Загрузите определенный тег с помощью Git
- git-tag Включает ли "git fetch --tags" "git fetch"?
- git-tag Как получить последнее имя тега в текущей ветке в Git?
- git-tag Чем тег отличается от ветки в Git? Что я должен использовать здесь?
- git-tag Как пометить старый коммит в Git?
- git-tag Как вы нажимаете тег на удаленный репозиторий с помощью Git?