HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Для начала пройдем поверхностно весь путь от создания проекта в Git до начала отслеживания изменений. Этой теме мы посвятим этот урок, а уже в следующих - поговорим подробнее про все этапы. В процессе мы изучим большое количество новых терминов и команд, которые нужны для понимания работы Git.</p>
1 <p>Для начала пройдем поверхностно весь путь от создания проекта в Git до начала отслеживания изменений. Этой теме мы посвятим этот урок, а уже в следующих - поговорим подробнее про все этапы. В процессе мы изучим большое количество новых терминов и команд, которые нужны для понимания работы Git.</p>
2 <h2>Основные команды</h2>
2 <h2>Основные команды</h2>
3 <p>Git может отслеживать файлы проекта только в том случае, когда они помещены под контроль версий. Для этого нужно зайти в директорию проекта и выполнить команду инициализации git init.</p>
3 <p>Git может отслеживать файлы проекта только в том случае, когда они помещены под контроль версий. Для этого нужно зайти в директорию проекта и выполнить команду инициализации git init.</p>
4 <p>Проект может быть как новый, так и уже существующий. Процесс инициализации от этого не поменяется:</p>
4 <p>Проект может быть как новый, так и уже существующий. Процесс инициализации от этого не поменяется:</p>
5 <p>Команда git init создает репозиторий - директорию<em>.git</em>, которая содержит все необходимые для работы Git-файлы.</p>
5 <p>Команда git init создает репозиторий - директорию<em>.git</em>, которая содержит все необходимые для работы Git-файлы.</p>
6 <p>С помощью команды git status можно посмотреть статус репозитория:</p>
6 <p>С помощью команды git status можно посмотреть статус репозитория:</p>
7 <p>В этом выводе указано, что репозиторий пустой (No commits yet) - в нем нет новых или измененных файлов.</p>
7 <p>В этом выводе указано, что репозиторий пустой (No commits yet) - в нем нет новых или измененных файлов.</p>
8 <p>Давайте попробуем добавить несколько файлов:</p>
8 <p>Давайте попробуем добавить несколько файлов:</p>
9 <p>Теперь снова смотрим на статус:</p>
9 <p>Теперь снова смотрим на статус:</p>
10 <p>Git увидел, что в проекте появились новые файлы, о которых ему ничего не известно. Они помечаются как<strong>неотслеживаемые файлы</strong>(<em>untracked files</em>).</p>
10 <p>Git увидел, что в проекте появились новые файлы, о которых ему ничего не известно. Они помечаются как<strong>неотслеживаемые файлы</strong>(<em>untracked files</em>).</p>
11 <p>Git не следит за изменениями в таких файлах, потому что они не добавлены в репозиторий.</p>
11 <p>Git не следит за изменениями в таких файлах, потому что они не добавлены в репозиторий.</p>
12 <p>Добавление в репозиторий происходит в два шага. Первым шагом выполняем команду подготовки файлов git add &lt;путь до файла&gt;:</p>
12 <p>Добавление в репозиторий происходит в два шага. Первым шагом выполняем команду подготовки файлов git add &lt;путь до файла&gt;:</p>
13 <p>Смотрим, что произошло:</p>
13 <p>Смотрим, что произошло:</p>
14 <p>Файл<em>README.md</em>теперь находится в состоянии "подготовлен к коммиту" - другими словами, файл<strong>попал в индекс</strong>.</p>
14 <p>Файл<em>README.md</em>теперь находится в состоянии "подготовлен к коммиту" - другими словами, файл<strong>попал в индекс</strong>.</p>
15 <p>Следующий шаг - это<strong>коммит</strong>. Под этим термином понимается окончательное добавление в репозиторий, когда Git запоминает файл навсегда и следит за всеми последующими изменениями.</p>
15 <p>Следующий шаг - это<strong>коммит</strong>. Под этим термином понимается окончательное добавление в репозиторий, когда Git запоминает файл навсегда и следит за всеми последующими изменениями.</p>
16 <p>Во время коммита мы берем все подготовленные изменения (они могут включать любое количество файлов) и отправляем их в репозиторий как единое целое. Вот, как он выполняется:</p>
16 <p>Во время коммита мы берем все подготовленные изменения (они могут включать любое количество файлов) и отправляем их в репозиторий как единое целое. Вот, как он выполняется:</p>
17 <p>Флаг -m означает<em>message</em>, то есть описание коммита. Коммит можно выполнять и без него, но тогда откроется редактор, в котором нужно будет ввести описание коммита.</p>
17 <p>Флаг -m означает<em>message</em>, то есть описание коммита. Коммит можно выполнять и без него, но тогда откроется редактор, в котором нужно будет ввести описание коммита.</p>
18 <p>Мы рекомендуем делать осмысленные описания - это хороший тон. Пример соглашения по именованию коммитов приведен в дополнительных материалах к уроку.</p>
18 <p>Мы рекомендуем делать осмысленные описания - это хороший тон. Пример соглашения по именованию коммитов приведен в дополнительных материалах к уроку.</p>
19 <p>Перейдем к процессу работы с Git:</p>
19 <p>Перейдем к процессу работы с Git:</p>
20 <p>Может возникнуть вопрос: зачем так сложно? Зачем отдельно отправлять файлы в индекс командой git add? Почему нельзя добавлять все измененные файлы сразу в коммит?</p>
20 <p>Может возникнуть вопрос: зачем так сложно? Зачем отдельно отправлять файлы в индекс командой git add? Почему нельзя добавлять все измененные файлы сразу в коммит?</p>
21 <p>Как ни странно, такой процесс создан как раз для удобства программистов. Дело в том, что во время разработки может меняться и добавляться много файлов. Но это не значит, что мы хотим добавить все эти изменения в один коммит.</p>
21 <p>Как ни странно, такой процесс создан как раз для удобства программистов. Дело в том, что во время разработки может меняться и добавляться много файлов. Но это не значит, что мы хотим добавить все эти изменения в один коммит.</p>
22 <p>Со смысловой точки зрения, коммит - это какое-то логически завершенное изменение внутри проекта. Его размер бывает очень разным:</p>
22 <p>Со смысловой точки зрения, коммит - это какое-то логически завершенное изменение внутри проекта. Его размер бывает очень разным:</p>
23 <ul><li>Маленьким, если мы исправляем одну опечатку в одном файле</li>
23 <ul><li>Маленьким, если мы исправляем одну опечатку в одном файле</li>
24 <li>Большим, если мы внедряем новую функциональность</li>
24 <li>Большим, если мы внедряем новую функциональность</li>
25 </ul><p>Главное в коммите - его<strong>атомарность</strong>. Другими словами, он должен выполнять ровно одну задачу.</p>
25 </ul><p>Главное в коммите - его<strong>атомарность</strong>. Другими словами, он должен выполнять ровно одну задачу.</p>
26 <p>Теперь файл<em>README.md</em>находится внутри репозитория. Убедиться в этом можно, запустив команду git status:</p>
26 <p>Теперь файл<em>README.md</em>находится внутри репозитория. Убедиться в этом можно, запустив команду git status:</p>
27 <p>Команда<em>git status</em>не выводит файлы, которые добавлены в репозиторий и не содержат изменений. При этом сам файл<em>README.md</em>находится внутри директории<em>hexlet-git</em>.</p>
27 <p>Команда<em>git status</em>не выводит файлы, которые добавлены в репозиторий и не содержат изменений. При этом сам файл<em>README.md</em>находится внутри директории<em>hexlet-git</em>.</p>