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