Git: репозиторий, рабочее дерево и индекс
Git хранит историю изменений в репозитории. Чтобы пользоваться им осознанно, нужно понять три области: рабочее дерево, индекс и история коммитов.
Краткий ответ
Git хранит историю изменений в репозитории. Чтобы пользоваться им осознанно, нужно понять три области: рабочее дерево, индекс и история коммитов.
Git хранит историю изменений в репозитории. Чтобы пользоваться им осознанно, нужно понять три области: рабочее дерево, индекс и история коммитов.
Рабочее дерево - это файлы проекта на диске. Индекс, или staging area, - промежуточная область, куда вы добавляете изменения перед коммитом. История - набор сохраненных коммитов.
Главная схема
1. Вы меняете файлы в рабочем дереве. 2. Командой git add выбираете изменения для коммита. 3. Командой git commit сохраняете выбранные изменения в историю.
Проверка состояния
git status
git status --short
git status показывает, какие файлы изменены, какие подготовлены к коммиту и что Git предлагает сделать дальше. Это команда, которую стоит запускать часто.
Почему нужен индекс
Индекс позволяет собрать коммит только из части изменений. Например, вы поправили README и одновременно начали эксперимент в коде. В коммит можно добавить только README, а эксперимент оставить незакоммиченным.
git add README.md
git commit -m "Обновить описание проекта"
Что такое хороший коммит
Хороший коммит отвечает на один логический шаг: добавить конфиг, исправить ошибку, обновить документацию, подключить тест. Если в один коммит попали unrelated-изменения, историю сложнее читать и откатывать.
Понимание рабочего дерева и индекса делает Git предсказуемым. Вы перестаете бояться команды commit, потому что понимаете, какие именно изменения попадут в историю.
Что важно запомнить
- Git хранит историю изменений в репозитории.
- Чтобы пользоваться им осознанно, нужно понять три области: рабочее дерево, индекс и история коммитов.
- Рабочее дерево - это файлы проекта на диске.
- Индекс, или staging area, - промежуточная область, куда вы добавляете изменения перед коммитом.
https://yadro-code.ru/lessons/without-university/command-line-git-basics/command-line-git-07