/git-manual

Расширенное руководство по Git на русском языке

Расширенное руководство по GIT

Разделы

Установка

Установка Git на компьютер

Установка Git на Windows

  1. Перейдите на официальный сайт Git по ссылке https://git-scm.com/
  2. Нажмите на кнопку "Downloads" и выберите версию для установки на вашу операционную систему.
  3. Запустите загруженный файл и следуйте инструкциям установщика
  4. После установки, откройте командную строку и введите команду git --version, чтобы проверить, что Git установлен

Установка Git на Mac

  1. Откройте терминал
  2. Установите Homebrew, если он еще не установлен, введя в терминале команду /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
  3. Установите Git, введя в терминале команду brew install git
  4. После установки, откройте терминал и введите команду git --version, чтобы проверить, что Git установлен
Первоначальная настройка

Настройка информации о пользователе для всех локальных репозиториев

Устанавливает имя, которое будет отображаться в поле автора у выполняемых вами коммитов
git config --global user.name "[имя]"
Устанавливает адрес электронной почты, который будет отображаться в информации о выполняемых вами коммитах
git config --global user.email "[адрес электронной почты]"
Генерация ssh-ключа

Генерация ssh-ключа для использования на Github(или подобных сервисах)

На Windows

  1. Откройте Git Bash
  2. Введите команду ssh-keygen -t rsa -b 4096 -C "your_email@example.com". Эта команда создаст новый SSH-ключ с указанным email-адресом
  3. Нажмите Enter, чтобы сохранить ключ в файл по умолчанию. Обычно это C:\Users\your_username\.ssh\id_rsa
  4. Введите парольную фразу, если хотите добавить дополнительный уровень безопасности и нажмите Enter. Это необязательно, но рекомендуется
  5. Добавьте ключ в ssh-agent с помощью команды eval "$(ssh-agent -s)" и ssh-add ~/.ssh/id_rsa. Это позволит использовать ключ без необходимости вводить парольную фразу каждый раз
  6. Скопируйте содержимое файла id_rsa.pub в буфер обмена. Вы можете сделать это с помощью команды clip < ~/.ssh/id_rsa.pub
  7. Откройте GitHub(или другой подобный сервис) и перейдите в настройки своей учетной записи
  8. Нажмите на "SSH and GPG keys" и затем на "New SSH key"
  9. Введите заголовок и вставьте содержимое файла id_rsa.pub
  10. Нажмите "Add SSH key"

На Mac

  1. Откройте терминал
  2. Введите команду ssh-keygen -t rsa -b 4096 -C "your_email@example.com" Эта команда создаст новый SSH-ключ с указанным email-адресом
  3. Нажмите Enter, чтобы сохранить ключ в файл по умолчанию. Обычно это ~/.ssh/id_rsa
  4. Введите парольную фразу, если хотите добавить дополнительный уровень безопасности и нажмите Enter. Это необязательно, но рекомендуется
  5. Добавьте ключ в ssh-agent с помощью команды eval "$(ssh-agent -s)" и ssh-add -K ~/.ssh/id_rsa Это позволит использовать ключ без необходимости вводить парольную фразу каждый раз
  6. Скопируйте содержимое файла id_rsa.pub в буфер обмена. Вы можете сделать это с помощью команды pbcopy < ~/.ssh/id_rsa.pub
  7. Откройте GitHub(или другой подобный сервис) и перейдите в настройки своей учетной записи
  8. Нажмите на "SSH and GPG keys" и затем на "New SSH key"
  9. Введите заголовок и вставьте содержимое файла id_rsa.pub
  10. Нажмите "Add SSH key"
Создание репозитория

Создание нового репозитория или получение его по существующему URL-адресу

Создаёт новый локальный репозиторий с заданным именем
git init [название проекта]
Скачивает репозиторий вместе со всей его историей изменений
git clone [url-адрес]
Внесение изменений

Просмотр изменений и создание коммитов (фиксация изменений)

Перечисляет все новые или изменённые файлы, которые нуждаются в фиксации
git status
Показывает различия по внесённым изменениям в ещё не проиндексированных файлах
git diff
Индексирует указанный файл для последующего коммита
git add [файл]
Показывает различия между проиндексированной и последней зафиксированной версиями файлов
git diff --staged
Отменяет индексацию указанного файла, при этом сохраняет его содержимое
git reset [файл]
Фиксирует проиндексированные изменения и сохраняет их в историю версий
git commit -m "[сообщение с описанием]"
Коллективная работа

Именованные серии коммитов и соединение результатов работы

Список именованных веток коммитов с указанием выбранной ветки
git branch
Создаёт новую ветку
git branch [имя ветки]
Переключается на выбранную ветку и обновляет рабочую директорию до её состояния
git switch -c [имя ветки]
Вносит изменения указанной ветки в текущую ветку
git merge [имя ветки]
Удаляет выбранную ветку
git branch -d [имя ветки]
Операции с файлами

Перемещение и удаление версий файлов репозитория

Удаляет конкретный файл из рабочей директории и индексирует его удаление
git rm [файл]
Убирает конкретный файл из контроля версий, но физически оставляет его на своём месте
git rm --cached [файл]
Перемещает и переименовывает указанный файл, сразу индексируя его для последующего коммита
git mv [оригинальный файл] [новое имя]
Игнорирование некоторых файлов

Исключение временных и вторичных файлов и директорий

Git будет игнорировать файлы и директории, перечисленные в файле .gitignore с помощью wildcard синтаксиса
*.log
build/
temp-*
Список всех игнорируемых файлов в текущем проекте
git ls-files --others --ignored --exclude-standard
Сохранение фрагментов

Сохранение и восстановление незавершённых изменений

Временно сохраняет все незафиксированные изменения отслеживаемых файлов
git stash
Восстанавливает состояние ранее сохранённых версий файлов
git stash pop
Выводит список всех временных сохранений
git stash list
Сбрасывает последние временно сохранённыe изменения
git stash drop
Просмотр истории

Просмотр и изучение истории изменений файлов проекта

История коммитов для текущей ветки
git log
История изменений конкретного файла, включая его переименование
git log --follow [файл]
Показывает разницу между содержанием коммитов двух веток
git diff [первая ветка]...[вторая ветка]
Выводит информацию и показывает изменения в выбранном коммите
git show [коммит]
Откат коммитов

Удаление ошибок и корректировка созданной истории

Отменяет все коммиты после заданного, оставляя все изменения в рабочей директории
git reset [коммит]
Сбрасывает всю историю вместе с состоянием рабочей директории до указанного коммита.
git reset --hard [коммит]
Работа с тегами

Использование тегов на проекте

Теги в Git - это ссылки на определенные моменты в истории Git. Они используются для создания снимков состояния репозитория Git и помечают определенные моменты в истории как важные. Теги могут быть аннотированными или облегченными. Аннотированные теги содержат дополнительную информацию, такую как имя тега, дату создания и сообщение описания. Облегченные теги - это просто ссылки на коммиты.
Теги могут использоваться для различных целей, например, для пометки релизов, версий, важных моментов в истории проекта и т.д.. Использование тегов может помочь разработчикам ориентироваться в истории проекта и быстро находить нужные моменты.
Просмотр имеющихся тегов
git tag
Создание нового облегченного тега (например v1.0)
git tag <tag_name>
Создание нового аннотированного тега (после выполнения откроется текстовый редактор, где нужно будет ввести сообщение описания тега)
git tag -a <tag_name> -m "<tag_message>"
Удаление существующего тега
git tag -d <tag_name>
Отправка тегов на сервер
git push --tags
Синхронизация с удалённым репозиторием

Регистрация удалённого репозитория и обмен изменениями

Скачивает всю историю из удалённого репозитория
git fetch [удалённый репозиторий]
Вносит изменения из ветки удалённого репозитория в текущую ветку локального репозитория
git merge [удалённый репозиторий]/[ветка]
Загружает все изменения локальной ветки в удалённый репозиторий
git push [удалённый репозиторий] [ветка]
Загружает историю из удалённого репозитория и объединяет её с локальной. pull = fetch + merge
git pull