#2 git Добавляем изменения и фиксируем их, учимся работать с историей
Primary tabs
Как гит отслеживает изменения - понятия коммит-а
Это происходит просто — вы сами уведомляете git о том, что текущее состояние проекта — очередная веха в его истории. Такое зафиксированное состояние называется коммитом (от англ. commit — «фиксация»).
Важно понимать: коммит запоминает не отдельный файл, а состояние всех файлов репозитория — как "снимок" (snapshot) всего проекта.
К любому такому снимку потом можно вернуться, "откатив" изменения (это одна из важнейших возможностей git-а)
При этом git не делает снимки сам — вы указываете ему, какие изменения должны попасть в очередной коммит. Для этого служат две основные команды:
git add— подготовить изменения (добавить их в так называемый индекс);git commit— зафиксировать подготовленное (создать коммит).
Типичный цикл работы выглядит так: изменили файлы → git add → git commit — и так по кругу.
Добавляем файл в проект
Продолжим работать с репозиторием, который мы создали в уроке #1. Перейдите в его папку и создайте обычный текстовый файл, например hello.txt — в любом редакторе или прямо в консоли:
echo "Привет, git!" > hello.txt
Теперь спросим у git, что он думает о состоянии папки:
git status
В ответ увидите примерно следующее:
On branch master No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) hello.txt nothing added to commit but untracked files present (use "git add" to track)
Git сообщает, что нашёл неотслеживаемый (untracked) файл: он его видит, но в историю пока не включает — вы ещё не сказали, что этот файл должен стать частью проекта. (Имя ветки может быть master или main — в зависимости от версии git и настроек, это нормально.)
git add — готовим изменения к фиксации
Чтобы файл попал в следующий коммит, его нужно добавить в индекс (staging area) — промежуточную область, куда складываются изменения, готовящиеся к фиксации:
git add hello.txt
Можно добавить сразу всё содержимое текущей папки — эта форма особенно удобна, когда изменений много:
git add .
Снова выполните git status — файл теперь находится в разделе Changes to be committed ("изменения, готовые к фиксации"), т.е. лежит на "сцене" и ждёт коммита.
git commit — фиксируем изменения
Создаём коммит — сохраняем подготовленный снимок в историю репозитория:
git commit -m "Добавляем первый файл hello.txt"
Ключ -m задаёт сообщение коммита — короткое описание того, что и зачем сделано. Сообщения пишутся для людей: по ним (а не по коду) история просматривается глазами. Хороший тон — коротко и по существу, например:
- "Добавляем файл с планами проекта"
- "Исправляем ошибку в подсчёте суммы"
В ответ git напечатает краткий отчёт: в какой ветке создан коммит, его идентификатор, сколько файлов и строк изменено.
git log — смотрим историю
Историю всех коммитов показывает команда:
git log
Для каждого коммита git выведет:
- хеш — уникальный идентификатор вида
a1b2c3d...(именно по нему позже можно будет вернуться к этому состоянию); - автора и дату создания;
- сообщение, которое вы указали после
-m.
Просмотр прокручивается стрелками, выход — клавишей q.
Есть и краткая, однострочная версия вывода:
git log --oneline
Закрепляем: ещё один цикл изменений
Измените hello.txt (допишите вторую строку) и повторите весь цикл, наблюдая за git status на каждом шаге:
git status # файл изменён, но ещё не подготовлен git add hello.txt git status # изменение готово к фиксации git commit -m "Дополняем hello.txt второй строкой" git log --oneline
В истории появились два коммита — вы только что создали первые записи в истории вашего проекта. Дальше всё то же самое: изменил → добавил → зафиксировал.
Итого
- git хранит историю как цепочку коммитов — снимков всего проекта;
git status— смотрим текущее состояние,git add— готовим изменения,git commit -m "..."— фиксируем,git log— изучаем историю.
В следующем уроке мы свяжем наш локальный репозиторий с внешним и опубликуем изменения — урок #3.
Видео-материалы
- git add сommit log Добавление файлов и фиксация изменений, просмотр истории
- Log in to post comments
- 1377 reads