Урок 10 из 49 · Месяц 2. Git и введение в JavaScript
Git, Git Bash и первый проект. Основы JavaScript и типы данных
Содержание урока
- Что такое система контроля версий
- Git и GitHub — не одно и то же
- Git Bash и проверка настроек
- Минимум команд терминала
- Основной цикл работы с Git
- Пример: первый репозиторий
- Файл .gitignore
- Заливка первого проекта на GitHub
- Шаг 1. Создаём репозиторий на сайте
- Шаг 2. Связываем и отправляем
- Вход в GitHub из терминала
- Дальнейшая работа
- Типичные ошибки с Git
- Основы языка JavaScript
- Консоль и console.log
- Переменные
- Правила имён
- Типы данных
- number — числа
- string — строки
- boolean — логический тип
- undefined и null
- bigint и symbol
- object — объекты
- Оператор typeof
- Преобразование типов
- Практика
- Итоги
В этом уроке два больших шага. Сначала разберёмся с Git — программой, которая запоминает историю изменений в коде, — освоим терминал Git Bash и основные команды и выложим первый проект на GitHub. Затем начнём учить сам JavaScript: научимся создавать переменные, выводить данные в консоль и познакомимся со всеми типами данных языка.
Что такое система контроля версий
Представьте, что вы пишете диплом и сохраняете файлы так: diplom.docx, diplom_final.docx, diplom_final_2.docx, diplom_final_TOCHNO.docx. Через неделю уже невозможно понять, чем они отличаются. Система контроля версий решает эту проблему: она хранит всю историю изменений проекта в одной папке, и в любой момент можно посмотреть, что, когда и зачем поменялось, или вернуться к старой версии.
Git — самая популярная система контроля версий. Её используют практически во всех компаниях. Она нужна, чтобы:
- сохранять «снимки» проекта (коммиты) и откатываться к ним;
- работать командой и аккуратно объединять изменения;
- хранить код в облаке (GitHub, GitLab) и показывать его работодателям.
Git и GitHub — не одно и то же
| Git | GitHub | |
|---|---|---|
| Что это | Программа на вашем компьютере | Сайт (облачный сервис) |
| Где работает | Локально, даже без интернета | В интернете |
| Зачем | Вести историю изменений | Хранить репозитории онлайн и делиться ими |
| Аналогия | Фотоаппарат, который делает снимки | Фотоальбом в облаке |
Git Bash и проверка настроек
Git мы уже установили и настроили в конце месяца 1 — в уроке про CSS-переменные и медиазапросы. Если пропустили этот шаг, вернитесь к нему: там описана установка на Windows и macOS и команды git config для имени и почты.
Git Bash — терминал, который ставится вместе с Git на Windows. В нём работают те же команды, что в терминале macOS и Linux, поэтому все примеры курса одинаковы для любой системы. На macOS используйте обычный «Терминал» или встроенный терминал VS Code.
Перед началом работы убедитесь, что всё на месте:
git --version # версия Git, например git version 2.x.x
git config --global user.name # должно вывести ваше имя
git config --global user.email # и почту — ту же, что на GitHub
Если имя или почта пустые — коммиты будут подписаны неправильно, повторите настройку из урока месяца 1.
Флаг --global означает «для всех проектов на компьютере». Если для одного проекта нужна другая почта (например, рабочая), выполните ту же команду без --global внутри папки этого проекта: git config user.email "work@example.com". Все текущие настройки показывает git config --list.
Минимум команд терминала
В терминале вы пишете команды текстом вместо кликов мышкой. Вот самые нужные:
pwd # в какой папке я сейчас
ls # файлы в текущей папке
cd projects # перейти в папку projects
cd .. # подняться на одну папку вверх
mkdir my-site # создать папку my-site
touch index.html # создать пустой файл index.html
Основной цикл работы с Git
В Git есть три «места», через которые проходит файл:
Рабочая папка → git add → Индекс (staging) → git commit → История (репозиторий)
- Рабочая папка — файлы, которые вы редактируете.
- Индекс — изменения, подготовленные к сохранению.
- Коммит — сохранённый снимок проекта с подписью.
Аналогия: вы собираете посылку. git add — положить вещи в коробку, git commit — заклеить коробку и подписать её.
Пример: первый репозиторий
mkdir my-first-project
cd my-first-project
git init
touch index.html
git status
git add index.html
git commit -m "Добавил index.html"
git log --oneline
Что здесь происходит:
git init— превращает обычную папку в Git-репозиторий (создаёт скрытую папку.git, где хранится вся история).git status— показывает, какие файлы изменены и что лежит в индексе. Команда безопасная, вызывайте её как можно чаще.git add index.html— добавляет файл в индекс. Чтобы добавить все изменённые файлы сразу, пишутgit add ..git commit -m "..."— создаёт коммит. После-mпишется сообщение: коротко и по делу, что сделано.git log --oneline— показывает историю коммитов, по одной строке на коммит.
Файл .gitignore
Некоторые файлы не нужно хранить в Git: системный мусор, папку node_modules (появится позже, в уроке npm и package.json), файлы с паролями. Их перечисляют в файле .gitignore в корне проекта:
.DS_Store
node_modules/
.env
Заливка первого проекта на GitHub
Шаг 1. Создаём репозиторий на сайте
- Зарегистрируйтесь на github.com.
- Нажмите New repository (зелёная кнопка или «+» в правом верхнем углу).
- Введите имя, например
my-first-project, оставьте его Public и не ставьте галочки «Add a README» — у нас уже есть локальный проект. - Нажмите Create repository. GitHub покажет адрес вида
https://github.com/USERNAME/my-first-project.git.
Шаг 2. Связываем и отправляем
git remote add origin https://github.com/USERNAME/my-first-project.git
git branch -M main
git push -u origin main
git remote add origin <адрес>— запоминает адрес удалённого репозитория под именемorigin(«источник»);git branch -M main— на всякий случай переименовывает текущую ветку вmain;git push -u origin main— отправляет коммиты на GitHub. Флаг-uсвязывает локальную ветку с удалённой, поэтому дальше достаточно писать простоgit push.
Вход в GitHub из терминала
С 2021 года GitHub не принимает обычный пароль аккаунта при git push. Варианты:
- на Windows Git Bash обычно сам открывает браузер для входа (Git Credential Manager) — самый простой путь;
- Personal Access Token из настроек GitHub (Settings → Developer settings) вместо пароля;
- SSH-ключ — см. документацию GitHub.
Дальнейшая работа
После первой отправки цикл всегда одинаковый:
git status
git add .
git commit -m "Сверстал блок с карточками"
git push
Чтобы скачать проект с GitHub на другой компьютер, используйте git clone <адрес репозитория>.
Типичные ошибки с Git
fatal: not a git repository— вы не в той папке или забылиgit init. Проверьтеpwd.git initв домашней папке — Git начнёт следить за всем компьютером. Делайтеgit initтолько в папке проекта.- Коммит без
git add— Git скажетnothing added to commit. Сначала добавьте файлы в индекс. rejected ... fetch firstпри push — на GitHub есть коммиты, которых нет у вас (например, вы создали README на сайте). Сначала выполнитеgit pull, потомgit push.
Основы языка JavaScript
HTML отвечает за структуру страницы, CSS — за внешний вид, а JavaScript — за поведение: реакцию на клики, проверку форм, загрузку данных. Как подключать скрипт к странице, мы разбирали в уроке Тег script и возможности JavaScript. Коротко: файл script.js подключается в конце <body> строкой <script src="script.js"></script>.
Консоль и console.log
Главный инструмент новичка — консоль браузера: нажмите F12 (на Mac Cmd + Option + J) и откройте вкладку Console.
console.log("Привет, мир!");
console.log(2 + 3);
console.log("Мне", 20, "лет");
В консоли появится Привет, мир!, 5 и Мне 20 лет — несколько значений передаются через запятую.
Переменные
Переменная — это коробка с подписью, в которую кладут значение. Подпись — имя переменной, содержимое — значение.
let userName = "Айгерим";
let age = 19;
console.log(userName); // Айгерим
console.log(age); // 19
age = 20; // кладём в коробку новое значение
console.log(age); // 20
let— ключевое слово «создать переменную»;userName— имя переменной;=— оператор присваивания: «положи справа налево»;;— конец инструкции (точку с запятой ставить принято).
Подробно про let и const (и почему не var) поговорим в следующем уроке Условия, операторы и let/const. Пока используйте let.
Правила имён
- Имя состоит из букв, цифр,
$и_, но не может начинаться с цифры:user1— можно,1user— нельзя. - Регистр важен:
ageиAge— разные переменные. - Принят стиль camelCase: первое слово с маленькой буквы, следующие — с большой:
totalPrice,isLoggedIn. - Давайте понятные имена:
priceлучше, чемp.
Типы данных
Каждое значение относится к какому-то типу: тип определяет, что с ним можно делать (числа складывают, строки склеивают). В JavaScript 8 типов: 7 примитивных и объект.
| Тип | Пример | Что хранит |
|---|---|---|
number |
42, 3.14, -7 |
Любые числа (целые и дробные) |
bigint |
12345678901234567890n |
Очень большие целые числа |
string |
"Привет", 'JS' |
Текст |
boolean |
true, false |
Да или нет |
undefined |
undefined |
«Значение ещё не задано» |
null |
null |
«Значения нет специально» |
symbol |
Symbol("id") |
Уникальный идентификатор |
object |
{ name: "Ali" }, [1, 2] |
Наборы данных |
number — числа
let price = 1500;
let rating = 4.8;
console.log(price * 2); // 3000
console.log(10 / 3); // 3.3333333333333335
console.log(10 / 0); // Infinity
console.log("abc" * 2); // NaN
Infinity — бесконечность, а NaN (Not a Number, «не число») — результат неудачной математической операции. Оба значения тоже относятся к типу number.
string — строки
Строку можно записать в двойных "...", одинарных '...' или обратных кавычках `...`. Обратные кавычки (шаблонные строки) позволяют вставлять переменные через ${...}:
let name = "Бекзат";
let city = 'Бишкек';
let greeting = `Привет, ${name}! Ты из города ${city}.`;
console.log(greeting); // Привет, Бекзат! Ты из города Бишкек.
console.log(name.length); // 6 — длина строки
console.log("2" + "2"); // "22" — строки склеиваются
boolean — логический тип
Всего два значения: true (истина) и false (ложь). Обычно получаются в результате сравнения:
let isAdult = 20 >= 18;
console.log(isAdult); // true
console.log(5 < 3); // false
undefined и null
let phone;
console.log(phone); // undefined — переменная создана, но значение не положили
let selectedCar = null; // мы сами говорим: «машина пока не выбрана»
console.log(selectedCar); // null
Правило: undefined ставит сам JavaScript, а null пишет программист, чтобы явно сказать «здесь пусто».
bigint и symbol
Встречаются редко: bigint пишется с буквой n в конце (10n) и нужен для огромных целых чисел, а каждый Symbol("id") уникален и используется как особый ключ объекта.
object — объекты
Объект хранит значения под именами (ключами), массив — список значений по порядку:
let user = { name: "Аружан", age: 22 };
let colors = ["red", "green", "blue"];
console.log(user.name); // Аружан
console.log(colors[0]); // red
Объекты и массивы подробно разберём в уроке Циклы, массивы и объекты.
Оператор typeof
Чтобы узнать тип значения, используют typeof:
console.log(typeof 42); // "number"
console.log(typeof "hello"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof 10n); // "bigint"
console.log(typeof Symbol()); // "symbol"
console.log(typeof { a: 1 }); // "object"
console.log(typeof [1, 2]); // "object" — массив тоже объект
console.log(typeof null); // "object" — историческая ошибка языка!
Преобразование типов
Данные из полей ввода приходят строками, поэтому их часто превращают в числа:
let input = "25";
console.log(input + 5); // "255" — склеивание строк!
console.log(Number(input) + 5); // 30
console.log(parseInt("42px")); // 42 — берёт число с начала строки
console.log(String(100)); // "100"
console.log(Number("abc")); // NaN
Обратите внимание на первую строку: если хотя бы один операнд у + — строка, JavaScript склеивает, а не складывает. Это самая частая ошибка новичков.
Ещё две частые ошибки: опечатка в регистре (username вместо userName — это другая переменная, будет ReferenceError) и разные кавычки в одной строке ("Привет' — ошибка синтаксиса).
Практика
- Первый репозиторий. В папке
js-basicsвыполнитеgit init, добавьтеindex.htmlиscript.js, сделайте коммит. Ожидаемый результат:git log --onelineпоказывает один коммит. - Заливка на GitHub. Создайте на GitHub репозиторий
js-basicsи отправьте туда проект черезgit push. Ожидаемый результат: файлы видны на странице репозитория в браузере. - Визитка в консоли. В
script.jsсоздайте переменныеname,age,city,isStudentи выведите шаблонной строкой фразу «Меня зовут …, мне … лет, я живу в …». Ожидаемый результат: в консоли одна аккуратная строка. - Детектор типов. Создайте по одной переменной каждого из 8 типов и выведите
typeofдля каждой. Ожидаемый результат: в консоли 8 строк, объясните для себя, почему уnullполучилось"object". - Калькулятор возраста. Создайте строку
birthYear = "2004", превратите её в число и посчитайте возраст в 2026 году. Закоммитьте и запушьте результат. Ожидаемый результат: в консоли22, а на GitHub — второй коммит.
Итоги
- Git хранит историю проекта, GitHub — облачное хранилище для Git-репозиториев.
- Git Bash — терминал для работы с Git; перед работой проверьте
git config --global user.name. - Основной цикл:
git status→git add .→git commit -m "..."→git push. - Переменная — именованная коробка для значения, создаётся через
let. - В JavaScript 8 типов данных:
number,bigint,string,boolean,undefined,null,symbolиobject. typeofпоказывает тип значения, аNumber()иString()преобразуют типы.