Файл, скажем, может быть в трех местах - дерево, индекс и рабочая копия. Когда вы просто добавляете файл в папку, вы добавляете его в рабочую копию.
Когда вы делаете что-то вроде git add file
, вы добавляете это в индекс. И когда вы делаете это, вы также добавляете его в дерево.
Это, вероятно, поможет вам узнать еще три распространенных флага в git reset:
git reset [- <mode>
] [<commit>
]
Эта форма сбрасывает текущую головку ветви на <commit>
и, возможно,
обновляет индекс (сбрасывая его на дерево <commit>
) и
рабочее дерево в зависимости от <mode>
, который должен быть одним из
следующее:
- мягкий
вообще не касается файла индекса и рабочего дерева (но сбрасывает
голова до <commit>
, как и во всех режимах). Это оставляет все ваши
измененные файлы "Изменения должны быть зафиксированы", как будет указано в git status.
- смешанный
Сбрасывает индекс, но не рабочее дерево (т.е. измененные файлы
сохраняются, но не помечаются для фиксации) и сообщает, что не было
обновлено. Это действие по умолчанию.
- жесткий
Сбрасывает индекс и рабочее дерево. Любые изменения в отслеживаемых файлах в
рабочее дерево с <commit>
отбрасывается.
Теперь, когда вы делаете что-то вроде git reset HEAD
- то, что вы на самом деле делаете, это git reset HEAD --mixed
, и он «сбрасывает» индекс в состояние, в котором он был до того, как вы начали добавлять файлы / добавлять модификации в индекс (через git add
) В этом случае рабочая копия и индекс (или подготовка) были синхронизированы, но вы произвели синхронизацию HEAD и индекса после сброса.
git rm
, с другой стороны, удаляет файл из рабочего каталога и индекса, а когда вы фиксируете файл, он также удаляется из дерева. git rm --cached
однако удаляет файл только из индекса и сохраняет его в вашей рабочей копии. Это полная противоположность git add file
. В этом случае вы сделали индекс отличным от HEAD и рабочего, так как HEAD имеет ранее зафиксированную версию файла, а рабочая копия имеет модификацию las, если любой или содержимое из HEAD файла, и вы удалили файл из индекса. При фиксации теперь будет синхронизироваться индекс и дерево, и файл будет удален.