Как делает понятие Мерзавца Индекса, улучшают или изменяют Ваш рабочий процесс?

Я пытался использовать Мерзавца на своих персональных проектах в течение почти месяца теперь.

У меня есть довольно хорошее понимание основного набора команд и в то время как его пользовательский опыт не является потрясающим, мне все еще нравится Мерзавец больше, чем другой VCS, который я использовал в прошлом.

Однако одно понятие, что я все еще не думаю, что "добрался", является реальной целью Индекса. У меня есть это чувство, что я не использую в своих интересах некоторое преимущество, которое это предназначается для дарования.

Какова цель наличия района сосредоточения войск? Приезжая из земли SVN, я так привык к обработке моей рабочей копии как мой район сосредоточения войск и мои снимки для моих фиксаций, взятых от этого.

Так, мой вопрос:

Что этот дополнительный уровень абстракции дает Вам? Как Индекс улучшил или изменил Ваш нормальный рабочий процесс? Можно ли предоставить какие-либо сценарии, где наличие Индекса позволило Вам делать что-то, что было бы неприятно для обхождений без него?

5
задан Dan Moulding 19 February 2010 в 03:06
поделиться

3 ответа

Бывают случаи, когда я начинаю работать над функцией или исправлением ошибки, а потом замечаю опечатку или какую-то другую мелкую (возможно, в одну строчку) вещь, которую нужно исправить. Вместо того чтобы бросать всю работу или даже использовать git stash, я могу просто зафиксировать это крошечное изменение через индекс; вся остальная работа остаётся там же, но теперь фиксация более конкретна: она показывает только это маленькое исправление, а не зарывается в десятках других строк изменений. Это сделало историю намного чище, что облегчает поиск изменений в журналах, поскольку они не смешиваются с другими коммитами.

В случае (сложных, больших) конфликтов слияния также приятно иметь возможность добавлять каждое сделанное изменение в индекс, чтобы знать, какие конфликты я устранил, а какие остались.

6
ответ дан 13 December 2019 в 22:06
поделиться

Говоря лично, в настоящий момент я переживаю массовый конфликт слияния, и мне приходится исправлять элементы один за другим. В этом случае я могу выполнить «git add» для файлов, которые я объединил, и по-прежнему вести отдельный учет тех, которые мне нужно исправить.

После того, как я прошел через это, я могу выполнить тестовую компиляцию, а затем повторно добавить любые дополнительные изменения, которые необходимы, прежде чем я зафиксирую в репозитории.

3
ответ дан 13 December 2019 в 22:06
поделиться

Иногда я выполните 'git cherry-pick -n' или 'git merge --squash', чтобы получить кучу изменений из чужой ветки, затем я отключу все эти изменения и использую git interactive add (git add -i) для этапа только то, что я хочу. Вы даже можете выбрать этапы выбора «кусков» различий и оставить остальные в измененном состоянии (отлично подходит для де-свертки вещей, которые должны были быть отдельными коммитами).

Также замечательно, когда вы редактируете целую кучу файлов, но решаете, что действительно должны зафиксировать все файлы, связанные с X, как одну фиксацию, прежде чем идти дальше, поэтому вы просто обрабатываете их, фиксируете и продолжаете работать над другие файлы.

Мне также нравится, как промежуточная область работает со слияниями, чтобы показать вам то, что не было поставлено автоматически. Конечно, область индекса не является строго необходимой для этого, но я считаю, что поведение diff по умолчанию, показывающее разницу только для неиндексных элементов, полезно, поэтому вы не беспокоитесь о просмотре материала сцены, если вы не используете diff - -кэшированный.

1
ответ дан 13 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: