Обоснование области размещения (индекса) git?
Я ищу причину изобретения области размещения / индексации в git. Это кажется дополнительным шагом по сравнению с другими системами контроля версий. Для этого должна быть веская причина. Это то, что я ищу.
Примечание: мне не нужно знать, как его использовать, потому что я уже некоторое время активно использую git и понимаю, как продвигать контент через переход в финальный кеш.
1 ответ
Почему "git commit -a" не используется по умолчанию? Запись в Git FAQ объясняет наиболее распространенные причины.
Индекс полезен для фиксации только некоторых изменений из рабочего дерева.
Рассмотрим следующий сценарий:
- Вы работаете над новой функциональностью; вы внесли несколько изменений в файлы рабочего дерева, работая над этой новой функцией.
- Вы обнаружите ошибку, которую нужно исправить; Вы идете вперед и делаете изменения, чтобы исправить новую ошибку.
- Теперь у вас есть рабочее дерево, в котором есть два типа изменений: "новая функция" и "исправление".
Вы можете использовать индекс, чтобы сделать коммит, который содержит только изменения "bugfix", без необходимости скрывать ваши изменения "новой функции". Вы даже можете использовать git add -p
размещать только часть изменений из каждого измененного файла.
Некоторые люди избегают этого конкретного метода, потому что он позволяет вам зафиксировать что-то, что не могло быть полностью и независимо протестировано (commit == "bugfix", но рабочее дерево (и среда тестирования) == "bugfix" + "новая функция"). Практически, если вы уверены, что изменения "исправление" и "новая функция" независимы, тогда вы сможете эффективно протестировать изменения "исправление", даже если в вашем рабочем дереве также есть изменения "новая функция".
Потенциально менее нежелательный вариант использования включает перенос "локальных" изменений в рабочем дереве без их фиксации. Скажем, репозиторий включает в себя файл конфигурации, который необходимо слегка изменить в вашей рабочей среде (изменение имени пользователя, адреса электронной почты и т. Д.). Вы можете использовать индекс для подготовки и фиксации всего, кроме локальных изменений конфигурации. Механизм такой же, как и в предыдущем случае использования; разница в том, что обычно легче убедить себя, что ваши локальные изменения конфигурации не зависят от каких-либо других возможных изменений, которые вы можете вносить.