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