Ваш рабочий каталог и ваш репозиторий отделены друг от друга, в том смысле, что код в вашем рабочем каталоге не связан с веткой, пока он не будет зафиксирован.
Чтобы еще больше запутаться, git представилновая концепция, называемая индексом, которая является промежуточным звеном между вашим рабочим каталогом и хранилищем .Когда вы запускаете git add
для файла, то, что вы действительно делаете, это добавляете его в индекс.Аналогично, когда вы запускаете git commit
, вы наконец добавляете содержимое индекса в репозиторий.
git status
различает индекс и рабочий каталог следующим образом.
Changes to be committed:
указывает на изменения в индексе Changed but not updated:
указывает на изменения в рабочем каталоге файлов, которые уже были добавлены в хранилище (и впоследствии не игнорируются) Untracked files:
указывает на измененияв рабочем каталоге к файлам, которые не уже добавлены в репозиторий
Если у вас есть несколько изменений, которые вы хотите сохранить на данный момент, но которые не гарантируютих собственная ветвь, используйте git stash
.Это механизм git для создания чрезвычайно легкой ветки с одним коммитом.Со страницы man (выделено мое):
Используйте git stash
, если вы хотите записать текущее состояние рабочего каталога и индекса , но хочу вернуться в чистый рабочий каталог.Команда сохраняет ваши локальные изменения и возвращает рабочий каталог в соответствие с HEAD
commit.