Є три місця, де може бути файл, скажімо, дерево - індекс та робоча копія. Коли ви просто додаєте файл до папки, ви додаєте його до робочої копії.
Коли ви робите щось на кшталт git add file
, додаєте це до індексу. І коли ви це зробите, ви також додаєте його до дерева.
Можливо, це допоможе вам дізнатися ще три поширені прапорці в git reset:
git reset [- <mode>
] [ <commit>
]
Ця форма скидає поточну голову гілки <commit>
та, можливо, оновлює індекс ( скидає його на дерево дерева <commit>
) та робоче дерево залежно від <mode>
, яке повинно бути одним із наступних:
--soft
Не торкається файлу індексу та робочого дерева взагалі (але скидає голову <commit>
, як і всі режими). Після цього всі змінені файли залишаються "Змінами, які потрібно здійснити".
- змішаний
Скидає індекс, але не робоче дерево (тобто змінені файли зберігаються, але не позначаються для фіксації) та повідомляє про те, що не було оновлено. Це дію за замовчуванням.
- твердий
Скидає індекс і робоче дерево. Будь-які зміни відслідковуваних файлів у робочому дереві відтоді <commit>
відкидаються.
Тепер, коли ви робите щось на кшталт git reset HEAD
того, що ви насправді робите, це - git reset HEAD --mixed
і він "скине" індекс до стану, який він був до того, як ви почали додавати файли / додавати модифікації до індексу (через git add
). У цьому випадку робоча копія та індекс (або інсценізація) синхронізувались, але ви зробили HEAD та індекс синхронізованими після скидання.
git rm
з іншого боку, видаляє файл із робочого каталогу та індексу, і коли ви здійснюєте, файл також видаляється з дерева. git rm --cached
однак видаляє файл лише з індексу та зберігає його у робочій копії. Це якраз протилежне. git add file
У цьому випадку ви зробили індекс, який відрізняється від HEAD та робочого, оскільки в ньому HEAD має попередньо скоєну версію файлу, робоча копія мала останню модифікацію, якщо така є або вміст від HEAD of файл, і ви видалили файл з індексу. Комісія зараз синхронізує індекс і дерево, і файл буде видалено.
git rm --cached
git diff
git diff --cached
git status
Untracked