Зарегистрированная негосударственная некоммерческая организация свидетельство № 1052p

Статьи

Основы Git и GitHub: руководство для начинающих

12 мин чтения

Что такое Git и GitHub и чем они отличаются: установка, коммиты, ветки, push и pull, разрешение конфликтов, GitHub Pages и правила безопасности.

Каждый, кто начинает учиться программированию, очень скоро слышит два слова: Git и GitHub. В вакансиях требование «умение работать с Git» тоже встречается почти всегда. В этом руководстве разберём, зачем нужен контроль версий, чем Git отличается от GitHub, как установить и настроить Git, какие у него основные понятия, как шаг за шагом создать первый репозиторий, отправить его на GitHub и забрать обратно, а также что такое ветки, Pull Request и конфликты. Затем поговорим о GitHub как портфолио, о правилах безопасности и о частых ошибках. В конце вас ждут практическое упражнение и чек-лист. Все команды настоящие — их можно сразу попробовать в терминале.

Зачем нужен контроль версий

Есть ли на вашем компьютере файлы вроде «kursovaya_final», «kursovaya_final_v2», «kursovaya_final_v2_samaya_poslednyaya»? Это очень распространённая проблема: непонятно, какая копия действительно последняя, что между ними изменилось и куда делся абзац, удалённый вчера. В статье о наведении порядка в файлах мы разбирали простые решения. Для кода и текстовых проектов есть инструмент мощнее — система контроля версий.

Система контроля версий запоминает каждое сохранённое состояние проекта: кто, когда, что и зачем изменил. В любой момент можно вернуться к прежнему состоянию, сравнить две версии или нескольким людям работать над одним проектом, не ломая работу друг друга.

Чем Git отличается от GitHub

Эти названия часто путают, но это разные вещи:

  • Git — бесплатная программа, которая устанавливается на ваш компьютер. Она работает и без интернета и хранит историю проекта у вас локально.
  • GitHub — веб-сервис для хранения Git-репозиториев в интернете и совместной работы над ними. Там можно просматривать и обсуждать код, работать в команде и даже размещать простой сайт.

Простое сравнение: Git — это фотоаппарат, а GitHub — онлайн-альбом, где снимки хранятся и которым можно делиться с друзьями. Без фотоаппарата альбом пуст, а без альбома снимки остаются на одном устройстве. GitHub — не единственный такой сервис: есть ещё GitLab и Bitbucket, но среди начинающих самый популярный именно GitHub.

Установка и первоначальная настройка

Скачайте Git с официального сайта — git-scm.com.

  • Windows. Запустите установщик; для начала хватит стандартных настроек. После установки в меню «Пуск» появится Git Bash — команды из этой статьи вводите именно там.
  • macOS. Введите в терминале git --version. Если Git нет, система сама предложит установить нужные инструменты.
  • Linux (Ubuntu). Командой sudo apt install git.

Проверьте установку и представьтесь. Имя и email записываются в каждый коммит, поэтому настройте их правильно один раз:

git --version
git config --global user.name "Bekzod Karimov"
git config --global user.email "bekzod@example.com"
git config --global init.defaultBranch main

Пояснение к последней строке. Раньше основная ветка по умолчанию называлась master. Сегодня GitHub и большинство проектов используют название main. С этой настройкой ваши новые репозитории сразу начинаются с main. Если в старых руководствах встретите master, это то же самое, просто старое название.

Основные понятия простым языком

Разберитесь в четырёх понятиях — и остальное в Git освоится легко.

  • Репозиторий (repository, коротко repo) — папка проекта вместе со всей его историей. Снаружи это обычная папка, но внутри есть скрытая папка .git — история хранится именно в ней. Не удаляйте её вручную.
  • Коммит (commit) — «снимок» проекта в определённый момент с короткой подписью. Похоже на точку сохранения в игре: ошиблись — вернулись к ней.
  • Ветка (branch) — параллельная линия работы. Основная линия (main) остаётся нетронутой, а новую идею вы пробуете в отдельной ветке. Понравился результат — добавляете в основную, не понравился — выбрасываете.
  • Удалённый репозиторий (remote) — копия в интернете, например репозиторий на GitHub. Обычно он называется origin.

Ещё одна важная идея — индекс (staging area). Git не сохраняет автоматически всё, что изменилось. Сначала командой git add вы выбираете, какие изменения войдут в следующий коммит, а затем командой git commit делаете снимок. Как будто сначала складываете в сумку нужные вещи, а потом застёгиваете её.

Первый репозиторий: шаг за шагом

Бекзод — студент университета, пишет курсовую работу в текстовом файле формата Markdown. Он хочет сохранять состояние после каждой готовой главы. Пройдём его путь.

Шаг 1. Создать папку и инициализировать репозиторий.

mkdir kurs-ishi
cd kurs-ishi
git init

git init создаёт внутри папки пустой репозиторий. Для каждого проекта эту команду выполняют только один раз.

Шаг 2. Посмотреть состояние. Бекзод создаёт в папке файл hisobot.md и пишет введение. Затем:

git status

git status — самая частая команда. Она показывает, какие файлы новые, какие изменены и какие готовы к коммиту. Не знаете, что делать дальше, — сначала введите её.

Шаг 3. Подготовить изменение и сделать коммит.

git add hisobot.md
git commit -m "Kirish qismini yozish"

Чтобы добавить сразу все изменённые файлы, используют git add . (точка означает текущую папку). Но перед этим посмотрите через git status, что именно добавляется.

Шаг 4. Посмотреть историю.

git log --oneline

Каждый коммит показан одной строкой: короткий код (идентификатор) и подпись. Чтобы увидеть, что изменилось после последнего коммита, введите git diff.

Хорошее сообщение коммита

Сообщение коммита — это письмо себе в будущем или коллеге. «изменения», «поправил» или «asdf» ничего не говорят. Хорошее сообщение:

  • короткое, примерно до 50 символов;
  • говорит, что сделано: «Добавить список источников во 2-ю главу»;
  • описывает одно логическое изменение — если сделаны две разные вещи, сделайте два коммита;
  • в команде пишется на одном языке и в одном стиле.

Файл .gitignore

Некоторые файлы не должны попадать в репозиторий: временные файлы, системные файлы, папки с библиотеками и, главное, пароли и секретные ключи. Их перечисляют в файле .gitignore в корне проекта:

# пример файла .gitignore
.env
node_modules/
*.log
.DS_Store
Thumbs.db

Внимание: .gitignore действует только на файлы, которые Git ещё не отслеживает. Если файл уже попал в коммит, его нужно убрать из отслеживания командой git rm --cached имя_файла, а затем сделать коммит.

Работа с GitHub: push, clone, pull

Аккаунт и репозиторий

  1. Зарегистрируйтесь на github.com через Sign up. Имя пользователя выбирайте серьёзно — со временем оно станет адресом вашего портфолио.
  2. Нажмите + в правом верхнем углу и выберите New repository.
  3. Введите название (например, kurs-ishi), выберите Public или Private. Если собираетесь загрузить репозиторий с компьютера, не ставьте галочку «Add a README file» — репозиторий должен быть пустым.
  4. Нажмите Create repository. GitHub покажет адрес репозитория.

Связать компьютер с GitHub и отправить изменения

git remote add origin https://github.com/bekzod-karimov/kurs-ishi.git
git push -u origin main

git remote add регистрирует копию в интернете под именем origin. git push отправляет коммиты на GitHub, а -u запоминает связь, так что в следующий раз достаточно просто git push. Если ваша ветка всё ещё называется master, сначала переименуйте её: git branch -M main.

О входе: пароль от аккаунта GitHub в терминале не принимает. В Windows поставляемый вместе с Git менеджер учётных данных (Git Credential Manager) при первом push откроет окно браузера — войдите там. В других системах вместо пароля используют персональный токен (personal access token), который создаётся в настройках GitHub, или SSH-ключ.

Работа на другом компьютере: clone и pull

Бекзод хочет поработать в компьютерном классе университета. Он скачивает репозиторий вместе со всей историей:

git clone https://github.com/bekzod-karimov/kurs-ishi.git

Закончив, он делает git add, git commit и git push. Вернувшись домой, забирает новые изменения на домашний компьютер:

git pull

Золотое правило: перед началом работы — git pull, после окончания — git push.

Ветки, Pull Request и конфликты

Нилуфар и Жавлон вместе делают небольшой сайт для проекта в колледже. Нилуфар пишет страницу «О нас», Жавлон — форму обратной связи. Если оба будут работать прямо в main, они могут сломать работу друг друга. Поэтому каждый открывает свою ветку.

Работа с ветками

git switch -c biz-haqimizda
# редактируем файлы, затем:
git add .
git commit -m "Biz haqimizda sahifasini qo'shish"
git switch main
git merge biz-haqimizda

git switch -c создаёт новую ветку и переключается на неё. git switch main возвращает в основную ветку, а git merge вливает изменения из ветки в текущую. Список всех веток показывает git branch. В старых руководствах встречается git checkout -b — она тоже работает, но git switch понятнее.

Идея Pull Request

В команде ветки обычно сливают не на компьютере, а на GitHub. Нилуфар отправляет свою ветку командой git push -u origin biz-haqimizda и нажимает на GitHub кнопку Compare & pull request. Pull Request (PR) — это просьба: «посмотрите мои изменения и добавьте их в основную ветку». Жавлон просматривает изменения построчно, оставляет комментарии и при необходимости просит исправить. Если всё в порядке, нажимается Merge pull request. Так в main попадает только проверенный код.

Конфликт и как его разрешить

Если оба по-разному изменили одну и ту же строку одного файла, Git не может сам решить, какой вариант правильный, — это называется конфликтом. Это не ошибка, а обычная ситуация. Например, оба поменяли заголовок в index.html. При слиянии Git расставит в файле метки:

<<<<<<< HEAD
<h1>Kollej loyihasi</h1>
=======
<h1>Bizning jamoa sayti</h1>
>>>>>>> biz-haqimizda

От HEAD до ======= — вариант из текущей ветки, ниже — из вливаемой. Порядок действий:

  1. Откройте файл в редакторе и оставьте правильный вариант (или объедините оба).
  2. Удалите строки <<<<<<<, ======= и >>>>>>>.
  3. Сохраните, затем выполните git add index.html и git commit.

Чтобы конфликтов было меньше, чаще делайте git pull, не держите ветки подолгу и договаривайтесь, кто над каким файлом работает.

GitHub как портфолио и безопасность

README и GitHub Pages

Работодатель часто открывает ссылку на GitHub из резюме. Добавляйте в каждый проект файл README.md: что делает проект, как его запустить, какие технологии использованы. Если создать репозиторий с тем же названием, что и ваше имя пользователя, и положить в него README, он появится на странице вашего профиля — это ваша короткая самопрезентация.

Мадина изучила основы HTML и CSS, сделала одностраничный сайт о себе и хочет выложить его в интернет. Для этого есть бесплатный сервис GitHub Pages:

  1. Она кладёт файл index.html в корень репозитория и делает git push.
  2. Открывает на GitHub раздел репозитория Settings → Pages.
  3. В Build and deployment → Source выбирает «Deploy from a branch», в Branch — main и / (root), нажимает Save.
  4. Через несколько минут сайт открывается по адресу имя-пользователя.github.io/имя-репозитория.

Эту ссылку можно добавить в резюме и профиль LinkedIn. Подробные советы — в статье о создании портфолио.

Правила безопасности

  • Никогда не загружайте в репозиторий пароли, токены и секретные ключи. Храните их в отдельном файле вроде .env и добавьте его в .gitignore.
  • Если всё же загрузили — немедленно смените ключ. Удалить файл следующим коммитом недостаточно: он остаётся в истории, а открытые репозитории автоматически сканируют боты.
  • Включите двухфакторную аутентификацию: Settings → Password and authentication. GitHub и сам всё чаще требует её от пользователей, которые загружают код.
  • Осторожнее с личными данными: копий паспорта, списков телефонных номеров и чужих данных в открытом репозитории быть не должно.

Общие правила — в статье об онлайн-безопасности.

Графические инструменты

Терминал не обязателен. GitHub Desktop — бесплатная программа для Windows и macOS: коммиты, push, pull и ветки делаются кнопками. В редакторе VS Code раздел Source Control на левой панели показывает изменения и позволяет делать коммиты. И всё же основные команды полезно один раз освоить в терминале: графические программы выполняют именно их, и при проблеме вы будете понимать, что происходит.

Частые ошибки

  • Всё в одном коммите. Неделя работы и один коммит «всё» делают историю бесполезной. Коммитьте после каждого логического шага.
  • Загрузка секретного файла. Случайно добавить .env или файл с паролями через git add .. Перед коммитом всегда смотрите git status.
  • Сменить компьютер, не сделав push. Бекзод поработал в университете и забыл отправить изменения — дома его ждёт старая версия. Закончили — git push, начали — git pull.
  • Удалить папку .git или вложить репозитории друг в друга. Вся история теряется или запутывается.
  • Испугаться конфликта и клонировать папку заново. Прочитать метки конфликта и разрешить его вручную — чаще всего дело одной минуты.
  • Непонятные сообщения коммитов. «fix», «новое», «123» — через месяц вы и сами не поймёте, что имелось в виду.

Практическое упражнение и чек-лист

Закрепите изученное за час практики:

  1. Установите Git и настройте имя и email через git config.
  2. Создайте папку mashq и выполните git init.
  3. Напишите в файле README.md 3–4 строки о себе и сделайте первый коммит.
  4. Создайте .gitignore и добавьте в него .env. Создайте файл .env и убедитесь, что в выводе git status его нет.
  5. Ещё дважды измените файл и сделайте коммиты с понятными сообщениями; посмотрите историю через git log --oneline.
  6. Создайте на GitHub пустой репозиторий и загрузите проект командами git remote add и git push -u origin main.
  7. Откройте ветку git switch -c tajriba, внесите изменение, сделайте коммит, вернитесь в main и выполните git merge.
  8. Отредактируйте README на GitHub прямо в браузере, затем на компьютере выполните git pull.
  9. По желанию добавьте простой index.html и включите GitHub Pages.

Чек-лист

  • Git установлен, имя и email настроены, основная ветка — main.
  • Коммиты небольшие, сообщения понятные.
  • Есть .gitignore, секретных файлов в репозитории нет.
  • В аккаунте GitHub включена двухфакторная аутентификация.
  • git pull в начале работы и git push в конце вошли в привычку.
  • В каждом открытом проекте есть понятный README.

Git — повседневный инструмент программиста, но он полезен и для текстовых документов, курсовых работ и сайтов. Если вы только думаете о том, чтобы начать программировать, привыкайте к Git с первых дней.

Если хотите системно изучать программирование с преподавателем, познакомьтесь с бесплатной программой по программированию и другими учебными программами нашей ассоциации. Когда будете готовы, оставьте заявку — наши специалисты свяжутся с вами.

Вернуться к статьям

Другие статьи

13 мин чтения

Знакомство с 1С: основы учётной программы

Что такое 1С:Предприятие, разница платформы и конфигурации, справочники, проведение документов, отчёты, резервная копия и упражнение для новичков.

Начните обучение сегодня

Набор в группы открыт. Оставьте заявку — наши специалисты свяжутся с вами и помогут выбрать подходящее направление.

Написать в Telegram