Модуль 02 — Установка, настройка и первый репозиторий

Git на своём компьютере: установка, представиться, создать репозиторий

Прогресс курса Модуль 2 из 9

Что вы освоите в этом модуле

01

Установка

По операционным системам

  • Debian, Ubuntu, Astra Linux: sudo apt install git
  • РЕД ОС, Fedora: sudo dnf install git
  • Windows: установщик Git for Windows с git-scm.com. В нём есть Git Bash — терминал, в котором работают все команды этого курса. Параметры установщика можно оставить по умолчанию.
  • macOS: xcode-select --install или brew install git

Проверка — команда выводит версию:

$ git --version
git version 2.47.2
Курс рассчитан на Git 2.23 и новее: команды git switch и git restore появились в этой версии. Если версия ниже — обновите Git.
02

Представиться: имя и почта

Каждый коммит подписывается именем и почтой автора. Без них Git откажется создавать коммит. Настройка делается один раз на компьютер:

$ git config --global user.name "Анна Смирнова"
$ git config --global user.email "anna@example.ru"

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

Почта в коммите ничем не проверяется: Git не отправляет на неё писем. Git-хостинг связывает коммит с вашим профилем, если почта в коммите совпадает с почтой в профиле.
03

Остальные настройки

# основная ветка новых репозиториев — main (по умолчанию в Git — master)
$ git config --global init.defaultBranch main

# редактор для сообщений коммитов: VS Code (ждать закрытия вкладки)
$ git config --global core.editor "code --wait"

# окончания строк: Windows — autocrlf true, Linux и macOS — input
$ git config --global core.autocrlf input

Зачем каждая

  • init.defaultBranch main. Имя основной ветки. Большинство платформ и команд сегодня используют main; в старых проектах встречается master. Разницы в работе нет, но единое имя избавляет от путаницы при первой отправке на сервер.
  • core.editor. Если не указать, Git откроет редактор vim, из которого новичку трудно выйти (Esc, затем :wq и Enter).
  • core.autocrlf. Windows заканчивает строки символами CRLF, Linux и macOS — LF. Без настройки один и тот же файл, открытый в разных системах, выглядит изменённым целиком.

Посмотреть все настройки и откуда они взяты:

$ git config --list --show-origin
file:/home/anna/.gitconfig   user.name=Анна Смирнова
file:/home/anna/.gitconfig   user.email=anna@example.ru
file:/home/anna/.gitconfig   init.defaultbranch=main
file:/home/anna/.gitconfig   core.editor=code --wait
file:/home/anna/.gitconfig   core.autocrlf=input
04

Уровни настроек

Настройки хранятся в трёх местах. Более узкий уровень перекрывает более широкий.

УровеньФлагФайлДействует
Системный--system/etc/gitconfigВсе пользователи компьютера
Пользовательский--global~/.gitconfigВсе ваши репозитории
Репозитория--local (по умолчанию).git/configТолько этот репозиторий

Пример: рабочие проекты подписываются рабочей почтой, личные — личной. Глобально задаётся личная почта, а внутри рабочего репозитория — рабочая:

$ cd ~/work/crm
$ git config user.email "a.smirnova@company.ru"
$ git config user.email
a.smirnova@company.ru
05

Первый репозиторий: git init

Репозиторий создаётся в любой папке командой git init. Файлы в папке при этом не меняются — появляется только скрытая папка .git.

$ mkdir portfolio
$ cd portfolio
$ git init
Initialized empty Git repository in /home/anna/portfolio/.git/

Проверка состояния — команда, которую вы будете запускать чаще всех остальных:

$ git status
On branch main

No commits yet

nothing to commit (create/copy files and use "git add" to track)

Создадим файл и посмотрим снова:

$ echo "# Портфолио" > README.md
$ git status
On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        README.md

nothing added to commit but untracked files present (use "git add" to track)

Untracked — неотслеживаемый файл: он лежит в рабочем каталоге, но Git его ещё не сохранял. Git подсказывает следующий шаг прямо в выводе — читайте эти подсказки.

Не создавайте репозиторий в домашней папке или на рабочем столе целиком. Git начнёт отслеживать все файлы внутри, включая чужие проекты и личные документы. Один проект — одна папка — один репозиторий.
06

Что внутри .git

$ ls -a
.  ..  .git  README.md
$ ls .git
HEAD  config  description  hooks  info  objects  refs

Главное в .git

  • objects/ — все снимки файлов и коммиты, сжатые и названные по хешу.
  • refs/ — ветки и теги: файлы с хешем коммита, на который они указывают.
  • HEAD — какая ветка сейчас активна. Сейчас в нём строка ref: refs/heads/main.
  • config — настройки уровня репозитория.

Папка .git — это и есть репозиторий. Удалите её — пропадёт вся история, а файлы рабочего каталога останутся обычной папкой. Скопируйте папку проекта вместе с .git — получите полную копию со всей историей.

Не редактируйте файлы в .git вручную и не кладите папку проекта в синхронизируемые облачные диски: одновременная синхронизация с двух компьютеров повреждает репозиторий. Для обмена служит git-хостинг (модуль 07).

Ключевые выводы модуля

Запомните главное

  • Перед первым коммитом задайте user.name и user.email — они попадают в историю навсегда
  • init.defaultBranch main избавляет от путаницы main/master
  • Настройки репозитория перекрывают глобальные, глобальные — системные
  • git init создаёт папку .git; файлы проекта не меняются
  • git status — первая команда при любой неясности; читайте подсказки в её выводе
Практические задания — на учебном портале. Задания, критерии оценивания, сдача работ и оценки преподавателя — в курсе на portal.nevabit.ru. Учётную запись выдаёт преподаватель.
Модуль 01: Введение Все модули Модуль 03: Коммиты