Git — это система управления версиями, которая предназначена для мониторинга изменений в файлах и управления историей этих изменений. Данное программное средство используется для контроля качества ПО и обеспечения безопасности кода. Git также позволяет проводить совместную работу над одним проектом нескольким специалистам одновременно, сохраняя историю изменений каждого участника.
В одной из прошлых инструкций мы рассказали об установке Git на Ubuntu. В отличие от нее, в Windows этот процесс может происходить в автономном установщике, а не в консоли, что намного удобнее и проще для пользователя. Базовые настройки, выбор компонентов и все остальные этапы установки будут происходить именно в нем.
В Windows Git обеспечивает пользователя набором инструментов и приложений для управления версиями файлов. Ниже будут приведены некоторые из доступных инструментов и функций, которые пользователь сможет использовать после выполнения установки ПО:
В настоящей инструкции мы опишем установку Git на Windows, подробно объясним каждый этап в автономном установщике, а также выполним первоначальную настройку системы управления версиями, после которой можно будет сразу приступать к работе.
Шаг 1. В первую очередь, необходимо зайти на официальный сайт компании во вкладку «Downloads for Windows». Здесь пользователю будет предложено несколько способов установки:
В рамках нашей инструкции мы выберем первый вариант, поэтому нажимаем на соответствующую ссылку, продемонстрированную на картинке ниже.
По окончании загрузки файла запускаем его и переходим к следующему шагу.
Шаг 2. В открывшемся окне установщика вас встретит общая публичная лицензия на софт. Здесь ничего делать не нужно, просто нажимаем кнопку «Next».
Для актуальной версии на момент написания статья вам потребуется не менее 321,5 мегабайт свободного места на диске.
Шаг 4. В следующем окне будет происходить выбор компонентов, которые будут установлены на устройство. Например, вы можете выбрать Git Bash для установки в Windows
Если вам требуются дополнительные компоненты помимо выбранных по умолчанию (например, автоматическая проверка обновлений), установите рядом с ними флажок. Мы же оставим только те, что предлагает установщик, кроме последнего — Scalar.
Шаг 5. После выбора компонентов, программа установки предлагает создать ярлыки для устанавливаемого ПО в соответствующей папке в меню «Пуск». В строке ввода указывается имя этой папки. Чтобы пропустить этот необязательный этап, установите флажок рядом с надписью «Don’t create a Start Menu folder».
Если вы выполните этот шаг, то программа установки создаст директорию с ярлыками, подобно той, что показана на картинке ниже.
Шаг 6. В следующем установочном окне пользователю необходимо выбрать текстовый редактор, который в дальнейшем будет использоваться по умолчанию в системе. На выбор ему будет предложено несколько решений:
Текстовый редактор Vim, который предлагает система для установки, может оказаться сложным решением для начинающих пользователей из-за своих особенностей в пользовательском интерфейсе и режимах работы. Более простой альтернативой ему может послужить консольный редактор Nano.
Как только вы выберете один из предложенных редакторов, нажмите кнопку «Next» и переходите к следующему шагу.
Шаг 7. Далее пользователю предстоит указать название начальной ветки в новых репозиториях. На момент написания инструкции, система предлагает имя master, но обещает поменять его на более универсальное в ближайшем будущем. Можно выбрать вариант, предлагаемый системой, либо указать свой собственный. Мы выберем первый вариант.
Шаг 8. Следующим шагом пользователю необходимо выполнить настройку способа использования Git.
На выбор ему будет предложено три варианта:
Первый вариант не изменяет переменную PATH, второй вносит небольшие модификации, а третий полностью перезапишет ее.
Мы выбираем вариант, предложенный системой по умолчанию, и нажимаем кнопку «Next».
Шаг 9. Далее необходимо выбрать SSH-клиент из двух предложенных вариантов. Это будет либо встроенный OpenSSH, либо внешний. По умолчанию, Git использует встроенный SSH-клиент, который называется ssh.exe. Если вы хотите использовать внешний, вам нужно установить его отдельно.
Мы выберем первый вариант, так как не выполняли установку внешнего клиента.
Шаг 10. Следующим шагом пользователю необходимо выбрать SSL/TLS-библиотеку, которую Git будет использовать для HTTPS-подключений. По умолчанию установщик предлагает выбрать библиотеку OpenSSL. Такой вариант подойдет обычным пользователям. Но если вы работаете внутри компании, которая использует свои сертификаты, выбирайте второй вариант.
Мы выбираем первый вариант и нажимаем кнопку «Next».
Шаг 11. После установщик предлагает пользователю настроить обработку окончания строк в текстовых файлах. Она бывает двух видов: для UNIX-систем — LF, а для Windows — CRLF. В предложенных вариантах обработки, checkout — это операция в Git, которая позволяет выбрать определенную ветку или коммит для работы, а commit — это операция для сохранения изменений в репозитории.
Мы выбираем первый вариант, где checkout выполняется в стиле Windows, а commit в стиле UNIX.
Шаг 12. Далее, пользователь выбирает один из предложенных эмуляторов терминала для Git Bash. Лучшим вариантом будет MinTTY, предложенный установщиком по умолчанию. Выбираем его и переходим к следующему шагу.
Теперь, пользователь должен выбрать поведение для команды git pull. Рекомендуется оставить вариант по умолчанию. Он подразумевает стандартное поведение для команды.
Шаг 14. Одним из заключительных шагов является выбор помощника по учетным данным. Git Credential Manager хранит пароли и другие личные данные для подключение к удаленным репозиториям. Чтобы не вводить их постоянно, выбираем его и нажимаем кнопку «Next».
Шаг 15. На предпоследнем шаге пользователь настраивает дополнительные параметры. Здесь он может включить кэширование файловой системы и символические ссылки. Рекомендуется оставить эти настройки по умолчанию, оставив только первый параметр.
Шаг 16. И наконец, перед началом установки Git, пользователю будет предложено подключить экспериментальные параметры. Мы не рекомендуем этого делать, так как они еще не стабильны.
Оставляем все без изменений, нажимаем кнопку «Install» и ожидаем окончания установки.
После выполнения описанных шагов Git будет установлен в систему. Перед началом работы необходимо произвести первоначальную настройку. Она будет описана в следующем разделе.
Первоначальная настройка Git
Чтобы начать работу с Git, необходимо произвести его первоначальную настройку. Как и в Ubuntu, она заключается в выполнение двух команд, которые задают имя пользователя и его электронную почту.
Так же, как и с именем, не забудьте подставить вместо свою электронную почту.
После проведенных настроек Git готов к работе. Теперь вы можете переходить к созданию репозитория и выполнению своего первого коммита.
В представленной инструкции был разобран процесс установки Git на Windows 11. Мы постарались подробно рассмотреть каждый этап в окне установщика, включая выбор дополнительных компонентов, SSH-клиента, SSL/TLS-библиотеки и других параметров.
Следуя данной инструкции, пользователи смогут самостоятельно установить и настроить Git на своих компьютерах.
Время на прочтение
Для пользователя Linux командная строка Windows кажется чем-то непривычным и неудобным. С появлением WSL казалось, что проблема использования Bash решена, но запуск виртуальной машины требует времени, да и пути в WSL отличаются от Windows. Плюс скорость файловых операций на виртуальной машине хуже.
Ещё есть возможность использовать Bash через MSYS2, но мне хотелось найти что-то более компактное и легковесное, а также простое в настройке и установке.
Так как я часто использовал Linux на роутерах, то познакомился с BusyBox, набор UNIX-утилит командной строки, используемой в качестве основного интерфейса во встраиваемых операционных системах. Оказалось, есть версия BusyBox для Windows. В 2020 году появился Windows Terminal, а в нем есть возможность создавать вкладку с запуском конкретной программы.

Пример вкладки Bash
Сложив эти два факта, пришла очевидная мысль, использовать BusyBox, содержащий в себе Bash, в Windows Terminal как отдельную консоль.

Список программ входящих в BusyBox

Профиль для Bash
У этого подхода был один минус, при запуске терминала не из конкретной папки, а из ярлыка на рабочем столе или из панели задач.
Запуск терминала из конкретной папки
То адрес рабочей папки был C:/Windows/System32, и если случайно ввести команду удаления или создания файла, то мы портим важную системную папку. Обойти возможно используя аналог .bashrc или /etc/profile или .profile.

Но просто создать файл .profile мало, BusyBox для Windows их не считывает, для этого необходимо добавить путь к этому файлу в ENV в “Переменные среды”.

Теперь мы можем написать скрипт, который будет настраивать рабочую директорию при запуске консоли.
Теперь если мы запустили терминал из ярлыка или панели задач, то рабочей директорией по умолчанию становится домашняя папка пользователя, а если мы запускаем из конкретной папки то, она и становится рабочей директорией.
Мы получили Bash в Windows Terminal с удобной начальной директорией.
В этой статье мы собрали команды Git для самых разных задач: от настройки локального репозитория до работы с ветками и взаимодействия с GitHub.
Если вы владеете Git, то можете сразу перейти в нужный раздел по ссылке. Новичкам мы рекомендуем читать последовательно: изучить основные Git-команды и попрактиковаться, посмотрев запись вебинара, ссылка на которую будет в конце статьи.

Senior Java-разработчик в компании CDEK.
Эксперт Skillbox, в прошлом работал над программой курса по Java, был программным директором.
Git не входит в стандартный набор программ Windows и macOS. В Linux он встречается, однако не во всех . Чтобы проверить его наличие, введите в «Терминале» команду:
Если Git установлен, вы увидете номер доступной версии. В противном случае вы увидете сообщение Unsupported command: git. Значит, утилиту нужно будет установить и настроить.
Git можно установить разными способами, и для каждой операционной системы свой порядок действий. На своё усмотрение выберите способ и приступайте.
Во время установки следуйте предложенным шагам и оставляйте настройки по умолчанию. Убедитесь, что у вас отмечены следующие пункты:
Также Git на Windows можно установить через winget от Microsoft. Для этого откройте оболочку PowerShell и введите команду:
winget install –id Git.Git -e — winget
macOS. В программе «Терминал» установите менеджер пакетов Homebrew:
После этого выполните команду:
$ brew install git
Другие способы установки Git на macOS описаны на сайте git-scm.com.
Linux. Перейдите на git-scm.com и скопируйте в «Терминал» команду для менеджера пакетов вашего Linux-дистрибутива. Вот некоторые варианты:
# Для Debian/Ubuntu
apt-get install git
# Для Fedora
yum install git
# Для OpenSUSE
zypper install git
Если у вас macOS или Linux, то после установки Git запустите «Терминал». Если Windows — Git Bash. В этих программах мы будем выполнять все команды.
В укажите имя и почту — это данные, по которым с вами могут связаться другие разработчики для обсуждения . То есть каждый ваш коммит будет подписан введённым ником и email-адресом.
Имя и фамилию нужно писать латиницей, через пробел, в кавычках:
Почту записываем в кавычках:
Опционально можно настроить автоматическую поддержку цветов. Эта опция сделает так, чтобы разные типы файлов различались цветами в :
git config — color.ui auto
Осталось убедиться, что данные добавлены и корректно отображаются:
git config –list
В ответ на запрос командная строка выведет настройки вашего профиля.
Переместитесь в папку с проектом и подключите Git:
После исполнения команды появится сообщение об инициализации репозитория. Оно означает, что Git начал отслеживать файлы проекта и будет записывать изменения в скрытую папку .git. Если вам понадобится инициализировать новый репозиторий — повторите процедуру. На одном компьютере Git может одновременно управлять неограниченным количеством репозиториев.
В командной строке удобно не только работать с Git, но и перемещаться по проекту. Вот список базовых команд, которые могут пригодиться:
При работе с Git вы будете добавлять файлы в индекс, проверять статус репозитория, создавать коммиты, смотреть историю и откатывать изменения.
Если вы создадите в проекте файл, то Git его посчитает неотслеживаемым (untracked). Такие файлы нельзя перенести в репозиторий без подготовки к сохранению. За подготовку отвечает индекс — промежуточная зона перед репозиторием. Перенести файлы в индекс можно с помощью команды git add.
В индекс можно добавить один файл, несколько или все сразу. После попадания в индекс файлы становятся подготовленными к коммиту (staged):
# Добавляем в индекс один файл
git add file_name
# Добавляем в индекс несколько файлов
git add file_name_1 file_name_2 file_name_3
# Добавляем в индекс все изменённые файлы
git add .
У команды git add есть ещё множество вариаций. Например, git add *.js перенесёт в индекс все файлы из текущей папки с расширением .js. Чтобы получить подробную документацию о какой-то команде — вызывайте справку:
git command_name
Команда git status даёт представление о текущем состоянии репозитория. Она показывает, какие неотслеживаемые файлы попали в проект, какие файлы находятся в индексе и какие сохранённые файлы вы изменили в репозитории.
$ git status # Запрашиваем текущее состояние репозитория
# Видим файлы, которые находятся в индексе и подготовлены для коммита
Changes to be committed:
(use to unstage)
modified: index.html
modified: styles.css
# Видим неотслеживаемые файлы, которые только попали в проект
Untracked files:
(use to include what will be committed)
script.js # Файл script.js не отслеживается Git
# Видим изменённые файлы репозитория, которые ещё не добавлены в индекс
Changes not staged commit:
(use to update what will be committed)
(use to discard changes working directory)
README.md # Файл README.md был изменён, но не добавлен в индекс
Когда все файлы подготовлены к сохранению, их можно перенести из индекса в репозиторий. Для этого нужна команда git commit с опцией -m и сообщением коммита. Сообщение пишется в кавычках и обычно латиницей:
git commit -m
❌ Добавил свой первый коммит.
✅ Исправил баг №ХХХХХ.
❌ Работал над файлом index.html.
✅ Сверстал header для главной страницы.
Если убрать опцию -m, то после нажатия Enter вы попадёте в текстовый редактор. Там вам нужно будет написать сообщение, сохранить его и выйти. А в Vim это нереально 😆
Бывает так: вы закоммитили файл и затем снова его изменяете. В этом случае можно делать новый коммит, минуя индекс. Для этого необходима опция -a:
git commit -am
Другая частая ситуация: вы торопились и ошиблись в сообщении коммита. Можно ввести опцию –amend и перезаписать сообщение последнего коммита:
git commit –amend -m “New commit message”
Команда git log показывает историю коммитов в обратном хронологическом порядке. Вы можете посмотреть хеш, сообщение, дату и ник автора коммита.
$ git # Запрос на просмотр журнала коммитов
# Информация о третьем сделанном коммите
commit 3f6f9e1f58e30e0d3a0d0ab764c0b30a5b621d4a # Хеш первого коммита
Author: John Doe # Автор первого коммита
Date: Thu Apr 21 10:26:52 2024 +0300 # Дата первого коммита
Update README.md # Сообщение первого коммита
# Информация о втором сделанном коммите
commit acd1e81729dc2ee2dc107ba345fa1ab7e6cfbff9
Author: Jane Smith
Date: Wed Apr 20 16:45:39 2024 +0300
Add new feature
# Информация о первом сделанном коммите
commit 7df1e8c33b0a617b3a72c785a67e45d0d932a180
Author: John Doe
Date: Mon Apr 18 09:12:21 2024 +0300
Initial commit
У команды git log множество опций, от которых будет зависеть отображение журнала. Например, можно в одну строку расположить информацию о каждом коммите. Для этого придётся убрать дату, ник автора и сократить размер хеша:
$ git –oneline # Запрос на вывод истории коммитов в одну строку
3f6f9e1 Update README.md
acd1e81 Add new feature
df1e8c Initial commit
Команда git show выводит информацию об одном коммите. Сообщение делится на два блока: часть с метаданными и список изменений, внесённых в коммит.
$ git show abc12345 # Запрос на просмотр коммита с хешем abc12345
commit abc12345 # Хеш коммита
Author: John Doe # Автор коммита
Date: Thu Apr :: + # Дата и время коммита
Update README.md # Сообщение коммита
# Список изменений в файле README.md
diff –git a/README.md b/README.md
index abcdef1.
— a/README.md
+++ b/README.md
-# My Project # Старое содержимое строки
+# My Awesome Project # Новое содержимое строки
Если ввести git show без хеша, то выведется содержимое последнего коммита.
Команда git diff показывает разницу между последним коммитом и текущим состоянием репозитория. То есть последний коммит сравнивается со всеми неотслеживаемыми файлами, которые ещё не переведены в индекс.
Можно добавить имя файла и сравнить его содержимое с последним коммитом.
Ещё вариант: вместо имени файла можно использовать хеш коммита. Также можно добавить опцию –staged и сравнить версию кода после последнего коммита с отслеживаемым состоянием репозитория — со всеми файлами, которые находятся в индексе.
# Смотрим разницу между последним коммитом и текущим состоянием репозитория
git diff
# Разница между последним коммитом и текущим состоянием файла
git diff file_name
# Разница между последним коммитом и коммитом с указанным хешем
git diff commit_hash
# Разница между последним коммитом и отслеживаемым состоянием репозитория
git diff –staged
Команда git difftool работает по принципу команды git diff — сравнивает файлы и находит в них различия. Только git diff отображает результат в текстовом виде, а git difftool в графическом: команда запускает внешние программы с визуальными инструментами сравнения файлов. Если хотите попробовать — установите Beyond Compare, vimdiff, Meld или другое похожее приложение. После прочтите документацию по git difftool и попрактикуйтесь отображать данные.
Команда git restore возвращает файл к состоянию последнего коммита. Она отменяет все изменения, если файл не перенесён в индекс. Если файл попал в индекс, то вместе с названием команды нужно использовать опцию –staged.
# Вернуть неотслеживаемый файл к состоянию последнего коммита
git restore file_name
# Вернуть все файлы из индекса к состоянию последнего коммита
git restore –staged
# Вернуть указанный файл из индекса к состоянию последнего коммита
git restore –staged file_name
Команда git rm позволяет удалить файл, который по ошибке попал в индекс. После выполнения команды файл пропадёт из индекса и из папки на вашем компьютере, в которой хранится проект. Если вы хотите удалить файл только из индекса, то команду git rm нужно использовать вместе с опцией –cached.
# Удалить файл из индекса и рабочей директории
git rm file_name
# Удалить файл из индекса и оставить в папке на компьютере
git rm –cached file_name
Команда git reset позволяет отменить любое количество сделанных коммитов и вернуть проект к какому-то состоянию в прошлом. Команду нужно выполнять с осторожностью, поскольку она может навсегда переписать историю проекта.
На выбор можно использовать три режима: –soft, –mixed и –hard.
В режиме –soft проект откатывается к указанному коммиту и переводит все последующие коммиты в индекс. Вы можете сразу сделать новый коммит и перезаписать историю проекта, оставив исходные файлы без изменений.
В режиме –mixed откаченные файлы попадают в неотслеживаемую зону. Вы можете эти файлы изменить, удалить или вернуть обратно в индекс.
В режиме –hard проект откатывается к указанному коммиту и удаляет все последующие коммиты без возможности их восстановления.
# Откатываемся и переводим последующие коммиты в индекс
git reset –soft commit_hash
# Откатываемся и переводим последующие коммиты в неотслеживаемую зону
git reset –mixed commit_hash
# Откатываемся и удаляем все последующие коммиты
git reset –hard commit_hash
Перед выполнением git reset мы рекомендуем всегда делать резервную копию проекта, на случай непредвиденного удаления файлов.
Вся разработка в Git происходит в ветках. Они сохраняют коммиты и организуют их в цепочку: перемещаясь по ветке от одного коммита к другому можно отследить изменения в проекте. При работе с ветками вы будете часто их создавать, просматривать, переименовывать, переключать, объединять и удалять.
После первого коммита Git автоматически создаёт первую ветку. Обычно в ней хранят стабильную версию проекта для пользователей продукта. Под остальные задачи разработчики создают отдельные ветки с помощью команды git branch:
git branch branch_name
По названию ветки должно быть понятно, что в ней происходит. Например, если в названии упоминается слово bugfix, то ветка предназначена для исправления ошибок. Слово feature указывает на разработку какой-то функции. А вот случайное название test10.24 не значит ничего, и таких названий лучше избегать.
Ветку с неудачным названием можно переименовать:
git branch -m old_branch_name new_branch_name
# old_branch_name — старое имя ветки
# new_branch_name — новое имя ветки
Команда git branch позволяет получить список всех доступных веток в проекте. Также она проставляет символ звёздочки слева от текущей активной ветки:
# Запрашиваем список всех доступных веток
git branch
# Результат вывода
bugfix/fix-bug
*
feature/new-feature
Команда git checkout позволяет переключиться с одной ветки на другую:
git checkout branch_name
Также можно одной командой создать новую ветку и сразу в неё перейти:
git checkout -b branch_name
У команды git checkout есть более современная альтернатива:
git switch branch_name
Команда git switch безопасней и больше подходит новичкам. Перед каждым переключением она автоматически проверяет рабочую директорию и не срабатывает, если переход на выбранную ветку может привести к потере данных.
Команда git merge позволяет добавить изменения из одной ветки в другую. Такой процесс называется слиянием, и он завершается появлением общего коммита для объединённых веток. По этому коммиту можно отследить историю каждой ветки.
# Переключаемся на основную ветку, которая будет принимать изменения
git checkout main_branch
# Сливаем изменения из второстепенной ветки в основную
git merge secondary_branch
После слияния второстепенная ветка больше не нужна и мы её можем удалить.
# Проверяем текущую ветку
git branch
# Результат вывода
main_branch
*
# Переключаемся на основную ветку
git checkout main_branch
# Удаляем второстепенную ветку
git branch -d secondary_branch
В предыдущих разделах мы использовали Git локально на компьютере. Теперь нам нужна удалённая версия репозитория, которой мы сможем поделиться с другими разработчиками или использовать в качестве резервного хранилища для проекта. Создать удалённый репозиторий можно на разных платформах, среди которых популярны сервисы GitHub и GitLab. Мы будем работать с GitHub.
С помощью командной строки переместитесь в папку с проектом на своём компьютере. Теперь вы можете выполнить команду git remote add, которая установит связь между вашим локальным и удалённым репозиторием на GitHub.
К команде нужно добавить два параметра: имя вашего удалённого репозитория и его адрес. Адрес вы найдёте на странице своего профиля во вкладке SSH.
Если вы часто взаимодействуете с GitHub, то с вашим локальным может быть связано множество удалённых репозиториев. Если ввести команду git remote, то можно посмотреть название этих репозиториев и отсортировать все ненужные.
# Запрашиваем список удалённых репозиториев, которые связаны с локальным
git remote
# Пример вывода: два удалённых репозитория связаны с нашим локальным
origin
upstream
Команда git remote показывает только названия удалённых репозиториев, которые связаны с вашим локальным. К команде можно добавить опцию -v и посмотреть удалённые URL-адреса. По URL-адресам будет видно, какие изменения вы делали.
Команда git push загружает изменения из локального репозитория в удалённый.
Во время первой загрузки нужно использовать команду с опцией -u. Это свяжет локальную и удалённую ветки и синхронизирует их для последующих операций. Для второй и всех последующих загрузок опция -u для связанных веток не понадобится.
# Команда для первой загрузки изменений в удалённый репозиторий: текущая ветка будет связана с веткой main в удалённом репозитории origin
git push -u origin main
# Команда для второй и последующих загрузок изменений в удалённый репозиторий
git push
Команда git pull скачивает изменения из удалённого репозитория в локальный.
# Скачиваем изменения из удалённого репозитория и добавляем их в локальную ветку
git pull
Попрактиковаться можно вместе с экспертами Skillbox.
Даниил Пилипенко, CEO центра подбора IT-специалистов SymbioWay, провёл вебинар по работе с системой управления версиями Git и её основным командам: git status, git add, git commit, git log, git branch, git clone и другим.
Вебинар Skillbox: основные команды для работы с Git и GitHub
Задача: форкнуть репозиторий в GitHub, создать ветку и работать с кодом.

Сразу появляется много вопросов — что такое GitHub, какие для этого нужны команды, зачем, а главное, как всем этим пользоваться? Давайте разберёмся.
Больше из рубрики Git: введение, основные команды, решение проблем.
Когда мы пишем код, мы постоянно туда что-то добавляем, удаляем, и иногда всё может ломаться. Поэтому перед любыми изменениями стоит сделать копию проекта. Если собирать проекты в папки с именами проект1, проект1_финали проект2_доделка, вы быстро запутаетесь и точно что-нибудь потеряете. Поэтому для работы с кодом используют системы контроля версий.
Система контроля версий — программа, которая хранит разные версии одного документа, позволяет переключаться между ними, вносить и отслеживать изменения. Таких систем много и все они работают по принципу компьютерной игры, где вы можете вернуться к месту сохранения, если что-то пошло не так.
Git — самая популярная система контроля версий. С Git можно работать через командную строку (или терминал). В каждой системе своя встроенная программа для работы с командной строкой. В Windows это PowerShell или cmd, а в Linux или macOS — Terminal. Вместо встроенных программ можно использовать любую другую — например, Git Bash в Windows или iTerm2 для macOS.
Как работает терминал: мы вводим команду и получаем ответ компьютера — или всё получилось, или где-то ошибка, или нужно ввести что-то ещё — например, пароль. Поэтому большая часть этой инструкции состоит из команд для терминала. Сначала будет непривычно, но вам понравится.
Но давайте по порядку — установим Git на компьютер.
Устанавливаем и настраиваем Git
Linux. Установите Git через встроенный менеджер пакетов. Если у вас Ubuntu, используйте команду sudo apt-get install git. Команды для других дистрибутивов можно посмотреть здесь.
Как проверить, что Git установился
Откройте терминал и введите команду
Если Git установлен, то вы увидите номер версии, например, 2.35.1.
Теперь нужно ввести имя и адрес электронной почты, чтобы ваши действия в Git были подписаны, а ещё для привязки к GitHub.
Добавить имя (введите его внутри кавычек):
Опция –global значит, что имя и почта будут использоваться для всех ваших действий в Git. Если вы хотите менять эту информацию для разных проектов, то вводите эти же команды, только без опции –global.
Регистрируемся на GitHub
GitHub (или Гитхаб) — веб-сервис на основе Git, который помогает совместно разрабатывать IT-проекты. На Гитхабе разработчики публикуют свой и редактируют чужой код, комментируют проекты и следят за новостями других пользователей.
Профиль на Гитхабе и все проекты в нём — ваше публичное портфолио разработчика, поэтому нужно завести профиль, если у вас его ещё нет.
На этом всё — вы зарегистрировались и у вас есть собственный профиль.
Устанавливаем SSH-ключи
Чтобы получить доступ к проектам на GitHub со своего компьютера и выполнять команды без постоянного ввода пароля, нужно, чтобы сервер вас узнавал. Для этого используются SSH-ключи.
SSH — протокол для безопасного соединения между компьютерами.
SSH-ключ состоит из двух частей — открытого и закрытого ключа. Открытый ключ мы отправляем на сервер. Его можно не прятать от всех и не переживать, что кто-то его украдёт, потому что без закрытого ключа он бесполезен. А вот закрытый ключ — секретная часть, доступ к нему должен быть только у вас. Это важно.
Мы будем подключаться к GitHub по SSH. Это работает так:
А чтобы подключиться к GitHub с помощью SSH-ключа, сначала нужно его создать.
Проверяем SSH-ключи
Перед созданием нового SSH-ключа проверим, есть ли на компьютере другие ключи. Обычно они лежат в папке с названием .ssh — поэтому посмотрим, есть ли в ней что-то, с помощью команды в терминале:
ls -al ~/.ssh
Если у вас уже есть SSH-ключ, то в списке будут файлы с именами вроде id_rsa.pub, id_ecdsa.pub или id_ed25519.pub. А если терминал ругается, что директории ~/.ssh не существует, значит, у вас нет SSH-ключей. Давайте это исправим.
Создаём новый SSH-ключ
Откройте терминал и скопируйте туда эту команду. Не забудьте подставить в кавычки почту, на которую вы регистрировались на Гитхабе.
ed25519 — это алгоритм для генерации ключей. Если ваша система не поддерживает алгоритм ed25519 (и вы увидели ошибку), используйте немного другую команду с алгоритмом rsa:
Терминал спросит, куда сохранить ключ. Если не хотите менять имя файла, которое предлагает терминал, просто нажмите Enter.
Теперь нужно добавить пароль, которым будет зашифрован ваш ключ. Это стоит сделать, иначе в дальнейшем могут быть проблемы с настройкой, да и так просто безопаснее.
В результате создаётся новый SSH-ключ, привязанный к вашей электронной почте.
Создание ключа по шагам:

Добавляем SSH-ключ в ssh-agent
ssh-agent — программа для хранения и управления SSH-ключами. Давайте запустим её и добавим туда наш SSH-ключ. Запускаем командой eval “$(ssh-agent -s)”:
Если в ответ терминал покажет надпись «Agent pid» и число — значит, всё ок, агент запущен.
Теперь добавим наш ключ командой.
Если у вашего ключа другое имя, замените название id_ed25519 именем файла с ключом (это правило применяется и дальше в инструкции). Если вы устанавливали пароль на ключ, введите его два раза после ввода команды ssh-add (терминал подскажет, когда это сделать).
Теперь, если всё хорошо, появится надпись Identity added — значит, можно переходить к добавлению ключа на GitHub.
Копируем SSH-ключ
Чтобы добавить ключ на GitHub, нужно сначала его скопировать из вашего файла командой clip. Вы не увидите ключ на экране, но он появится в буфере обмена, и его можно будет вставить на Гитхаб.
clip < ~/.ssh/id_ed25519.pub
Команда clip может не сработать на вашем компьютере, тогда есть два способа узнать ключ — простой и сложный.
Сложный способ. Найдите скрытую папку .ssh, откройте файл id_ed25519.pub в текстовом редакторе и скопируйте его содержимое.
Простой способ. Введите команду ниже и ключ появится прямо в терминале — его нужно вручную скопировать в буфер обмена. Ключ начинается с ssh-ed22519 или ssh-rsa (или похожей строки) — поэтому копируйте строку прямо с самого начала.
Не копируйте этот ключ из статьи — он уже не работает.
Добавляем SSH-ключ на GitHub
Это нужно сделать, чтобы GitHub вас узнавал.
Перейдите на страницу для работы с ключами в вашем профиле на GitHub и нажмите кнопку New SSH key.

В поле Title нужно добавить название нового ключа. Например, если вы используете Mac, вы можете назвать ключ MacBook Air, или, если ключ для курсов Академии, то Academy. А ключ, который вы скопировали на прошлом шаге, вставьте в поле Key.

Не копируйте ключ со скриншота — он уже не работает.
Теперь нажмите кнопку Add SSH key и, если потребуется, введите свой пароль от GitHub, чтобы подтвердить сохранение. Если всё сделано верно, новый ключ появится в списке на странице https://github.com/settings/keys.

Теперь мы можем поработать с проектом в репозитории.
Что такое репозиторий
Репозиторий — папка с файлами вашего проекта на сервере GitHub. Так вы можете работать с проектом откуда угодно, не переживая, что какие-то файлы потеряются — все данные останутся в репозитории.
Если над проектом работает несколько программистов, сначала создаётся мастер-репозиторий — это общий репозиторий с рабочей версией проекта. А каждый программист работает с форком — то есть полной копией мастер-репозитория. В форке вы можете безнаказанно менять код и не бояться что-то сломать в основной версии проекта.
Делаем форк мастер-репозитория
Заходим в нужный репозиторий и нажимаем на «вилку» с надписью fork.

Появится окно Create a new fork — проверьте, что он называется так, как вам нужно, и жмите кнопку Create fork. Через пару секунд всё готово.

Клонируем форк на компьютер — git clone
Открываем терминал и переходим в папку с будущим проектом — для этого используем команду cd your-project. Если вы хотите, чтобы проект лежал в папке device, введите
Если такой папки на компьютере нет, то сначала введите md your-project, чтобы создать эту папку, а затем cd your-project. Когда перейдёте в папку, введите команду git clone для клонирования репозитория:
Замените your-nickname на ваше имя пользователя на GitHub, а your-project на название проекта. Проще всего их найти прямо наверху страницы репозитория.
Если вы правильно настроили SSH-ключи, Git скопирует репозиторий на ваш компьютер.
Если вы видите ошибку Error: Permission denied (publickey), скорее всего, вы ошиблись в настройке SSH-ключа. Вернитесь в этот раздел инструкции и повторите процесс настройки.
Кстати, если вы хотите, чтобы название папки с проектом у вас на компьютере отличалось от имени репозитория, можете дополнить команду клонирования, добавив в конце другое название:
Теперь на вашем компьютере в папке your_project или в той, название которой вы указали, находится полная копия репозитория c GitHub.
В каждом репозитории есть как минимум одна основная ветка, которую создаёт сам Git — она называется master. Обычно в ней хранят проверенную версию программы без ошибок.
А если вы хотите исправить ошибку в коде или добавить что-то в проект, но не хотите сломать код в основной ветке, нужно создать новую ветку из master и работать из неё. Каждая ветка — что-то вроде второстепенной дороги, которая затем снова соединится с основной.
Создаём новую ветку — git branch
Она показывает список веток, с которыми мы работаем в проекте, и выделяет текущую. Если мы находимся в master , то создаём новую ветку командой
git checkout -b имя-новой-ветки.
➜ 1173761-device-34 git:(master) git checkout -b task1
Переключено на новую ветку «task1»
➜ 1173761-device-34 git:(task1)
Если текущая ветка не master, переключитесь на неё с помощью команды checkout. После git checkout надо указать название нужной ветки.
git checkout master
Мы делаем это, чтобы новая ветка содержала свежую рабочую версию проекта. Если вы ошиблись в названии, например, допустили опечатку, вы можете изменить название ветки с помощью команды:
git branch -m старое-имя-ветки новое-имя-ветки.
Сохраняем изменения — git add
После того, как вы создали ветку и поработали в ней у себя на компьютере, нужно сохранить результат, чтобы появился в репозитории и не пропал.
Если вы хотите сохранить изменения не во всех файлах, для начала введите команду git status. Она покажет текущее состояние в вашей ветке, а именно список с названиями изменённых файлов, если они есть, и укажет на те, которые ожидают записи и сохранения (обычно они выделены красным цветом).

Чтобы сохранить все изменения разом, используйте команду
git add -A
Чтобы сохранить изменения только отдельных файлов, укажите их имена вручную. Например, если вы изменили файл index.html, введите
git add index.html
Если название очень длинное, вы начните его писать, нажмите Tab и терминал сам предложит продолжение пути к файлу.
Делаем коммит — git commit
Сделать коммит — значит зафиксировать все сохранённые изменения и дать им название. Это делается с помощью команды commit
git commit -m “ваше сообщение”
Текст сообщения должен быть лаконичным и вместе с этим сообщать о том, что делает коммит (внесённые изменения). Например,

Отправляем изменения на GitHub — git push
Сохранённые изменения пока не видны коллегам, потому что находятся в нашем локальном репозитории. Нужно отправить коммиты на GitHub. Для этого введите команду
git push origin название-текущей-ветки
Где origin означает репозиторий на компьютере, то есть ваш форк. Слово origin — часть команды, не меняйте это название на своё.

Создаём пулреквест
Пулреквест (или PR) — это предложение изменить код в репозитории. PR должен проверить администратор мастер-репозитория — это может быть коллега-разработчик, техлид или наставник на курсе.
Если к коду нет вопросов, пулреквест принимается. Если нужно что-то исправить — отклоняется, и придётся исправить код и снова пройти цепочку git add — git commit — git push. Если вы и дальше работаете в той же ветке, а пулреквест ещё не принят, все ваши изменения автоматически добавятся в пулреквест, созданный из этой ветки после команды git push origin название-текущей-ветки.
Чтобы создать пулреквест, зайдите на страницу вашего форка на GitHub. Вверху появилась плашка Compare & pull request, а ещё можно зайти на вкладку Pull Requests.

Нажмите на неё и окажетесь на странице открытия пулреквеста. Проверьте описание и нажмите Create pull request.

Готово, теперь ждём остаётся ждать одобрения пулреквеста или комментариев к нему.
Синхронизируем репозитории
Предположим, вы исправили код, руководитель или наставник одобрил ваши правки и принял пулреквест.

Теперь код в мастер-репозитории обновился, а в вашем форке нет, вы ведь не обновляли свою версию репозитория с тех пор, как клонировали её себе на компьютер. Приведём форк в актуальное состояние.
В локальном репозитории переключаемся на ветку master.
Забираем изменения из ветки master мастер-репозитория
Отправляем изменения уже из своей ветки master в ваш форк на GitHub с помощью команды
git push origin master
Готово, теперь форк и оригинальный репозиторий находятся в актуальном состоянии.
Словарик
Git — самая популярная система контроля версий. С Git можно работать через терминал.
Как работает терминал: мы вводим команду и получаем ответ компьютера — или всё получилось, или где-то ошибка, или нужно ввести что-то ещё.
GitHub (или Гитхаб) — веб-сервис, основанный на Git, который помогает совместно разрабатывать IT-проекты. На Гитхабе разработчики публикуют свой и редактируют чужой код, комментируют проекты и следят за новостями других пользователей.
SSH-ключ нужен, чтобы получить доступ к проектам на GitHub со своего компьютера и выполнять команды без постоянного ввода пароля, нужно, чтобы сервер нас узнавал.
Репозиторий — папка с файлами вашего проекта на сервере GitHub или у вас на компьютере.
Мастер-репозиторий — это общий для всей команды репозиторий с рабочей версией проекта.
Форк — полная копия мастер-репозитория, в которой вы можете безопасно работать.
Пулреквест (или PR) — предложение изменить код в репозитории. PR должен проверить администратор мастер-репозитория — это может быть коллега-разработчик, техлид или наставник на курсе.
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.


