У меня много недоразумений по поводу области подготовки .
во-первых, Git Gud: рабочее дерево, промежуточная область и локальный репо скажите , что промежуточная область будет пустой после git commit , поэтому git commit может переместить файлы в локальную папку ветвь, а не копия.
Но казалось, что это не может объяснить эту практику: git reset --soft HEAD ~ изменяет промежуточный снимок? . git reset --soft HEAD ^ после git commit , а затем git status , казалось, что существует разница между областью подготовки и HEAD ^ и разница в файлах, которые были зафиксированы после HEAD ^.
Таким образом, казалось, что область подготовки не пуста после git commit , или, скорее, как объяснить разницу между текущим HEAD и областью подготовки, если область подготовки пуста?
И еще вопрос в том, что команда
git diff --cached
, который использовался для сравнения разницы между областью подготовки и HEAD. И Что означает «stage» в git? говорит мне, что в области подготовки хранятся только изменения файла. Например, мы git клонируем проект, который имеет три файла: a.txt b.txt c.txt, и мы изменили c.txt и git добавили it. Затем мы выполняем команду git diff --cached . Теперь в локальном филиале три файла, а в области подготовки - только один. почему он показывает только изменение c.txt, но не включает информацию о том, что область размещения не имеет a.txt b.txt по сравнению с локальной веткой.
Одним словом, у меня два вопроса:
1. что произошло, когда git commit , переместил или скопировал файл из промежуточной области в локальную ветку?
2. что произошло, когда git diff --cached ? просто сравнить файлы, которые содержит промежуточная область?
справка:
Коммит - это просто контрольная точка, сообщающая git отслеживать все изменения, которые произошли до этого момента, используя наш последний коммит в качестве сравнения. После фиксации ваша Стадионная область будет пуста.
из Git Gud: рабочее дерево, область подготовки и локальный репо