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 <путь до файла>:</p>
12
<p>Добавление в репозиторий происходит в два шага. Первым шагом выполняем команду подготовки файлов git add <путь до файла>:</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>