Это одно и то же? Если да, то почему так много терминов ?!
Кроме того, я знаю, что есть такая штука, которая называется git stash, это место, где вы можете временно хранить изменения в своей рабочей копии, не фиксируя их в репозитории. Я считаю этот инструмент действительно полезным, но, опять же, название очень похоже на множество других концепций в git -> это очень сбивает с толку !!
Индекс/stage/cache - это одно и то же - что касается того, почему так много терминов, я думаю, что индекс был "первоначальным" термином, но люди сочли его запутанным, поэтому были введены другие термины. И я согласен, что поначалу это немного запутывает ситуацию.
Функция stash
в git'е - это способ хранения "незавершённой" работы, которую вы не хотите фиксировать прямо сейчас, в объекте фиксации, который хранится в определённом каталоге/базе данных stash). Основная команда stash
будет хранить нефиксированные изменения, внесённые в рабочий каталог (как кэшированные/постановочные, так и некэшированные/непостановочные изменения), а затем вернёт рабочий каталог в HEAD.
На самом деле она не связана с кэшем index/stage/cache, за исключением того, что она сохраняет нефиксированные изменения, находящиеся в кэше.
Это позволяет вам быстро сохранить состояние грязного рабочего каталога и индекса, чтобы вы могли выполнить другую работу в чистой среде. Позже вы можете вернуть информацию из объекта stash и применить ее к рабочему каталогу (даже если сам рабочий каталог находится в другом состоянии).
Официальная git stash
manpage имеет довольно хорошие подробности, оставаясь при этом понятной. Там также есть хорошие примеры сценариев использования stash
.