Полное руководство по Git и GitHub

Инициализация репозитория

Для начала работы с Git создайте новый репозиторий в директории проекта:

git init

Эта команда создаст скрытую папку .git, в которой Git хранит всю историю проекта.

Отслеживаемые файлы и коммиты

Чтобы добавить файл в индекс и подготовить его к коммиту, используйте:

git add <имя_файла>

Затем создайте коммит с сообщением:

git commit -m "Сообщение коммита"

Для просмотра статуса файлов:

git status

Изменение коммитов

Исправить последний коммит (например, добавить забытые изменения):

git commit --amend

Эта команда открывает редактор сообщения коммита, где вы можете его отредактировать.

git commit --amend позволяет изменить последний коммит, в том числе:

  • изменить его сообщение;
  • добавить в него новые изменения;
  • удалить что-то из него.

Команда фактически переписывает последний коммит, создавая новый, заменяющий предыдущий.

🔹 Изменить только сообщение коммита:

git commit --amend

Откроется редактор, где можно поменять текст. Или сразу:

git commit --amend -m "Новое сообщение"

🔹 Добавить забытые изменения в последний коммит:

git add .
      git commit --amend --no-edit

⚠️ ВАЖНО:

Если ты уже запушил коммит в удалённый репозиторий (git push), и потом сделал --amend, тебе придётся сделать:

git push --force

(или использовать revert) Это может переписать историю в удалённой ветке, что опасно при работе в команде. В одиночку — норм.

🧠 Подсказка:

Используй git commit --amend:

  • для правки опечаток в коммите;
  • чтобы добавить забытые файлы;
  • когда хочешь объединить все изменения в один коммит перед пушем.

Откат изменений

Чтобы отменить изменения в файлах, не добавленных в индекс:

git checkout -- <файл>

Отменить изменения, которые уже добавлены в индекс:

git reset HEAD <файл>

Удаление коммитов

Удалить последний коммит, сохранив изменения в рабочей директории:

git reset --soft HEAD~1

Удалить последний коммит вместе с изменениями:

git reset --hard HEAD~1

Ответвления и слияние веток

Создать новую ветку:

git branch <название_ветки>

Переключиться на ветку:

git checkout <название_ветки>

Слить ветку feature в текущую:

git merge feature

Разрешение конфликтов

При слиянии, если возник конфликт, Git помечает конфликтующие части в файлах. Вам нужно вручную исправить эти участки и сделать коммит.

<<<<<<< HEAD
ваша версия
=======
версия из ветки feature
>>>>>>> feature

Удаление коммитов и веток

Удалить локальную ветку:

git branch -d <название_ветки>

Принудительно удалить ветку:

git branch -D <название_ветки>

Правила игнорирования файлов в Git

В Git есть файл .gitignore — это текстовый файл в корне репозитория, в котором перечисляются шаблоны файлов и папок, которые Git не должен отслеживать и включать в коммиты.

Это нужно, чтобы не загружать в репозиторий:

  • временные файлы IDE (например, .idea/, .vscode/);
  • скомпилированные двоичные файлы (*.exe, *.class);
  • файлы настроек и паролей (.env, config.local);
  • системные файлы (Thumbs.db, .DS_Store);
  • логи (*.log);
  • папки с зависимостями (node_modules/, venv/).

Как устроен .gitignore

  • Каждая строка — шаблон пути, который игнорируется.
  • Можно использовать символы подстановки:
    • * — любое количество любых символов;
    • ? — один любой символ;
    • ** — любой уровень вложенности папок.
  • Начинающиеся с # строки — комментарии.
  • Чтобы игнорировать папку, указывают слэш в конце: node_modules/.
  • Чтобы отменить игнорирование (если, например, папка игнорируется, но один файл из неё нужен), используют ! перед путём.

Пример .gitignore

# Игнорировать все логи
  *.log

  # Игнорировать папку с зависимостями Node.js
  node_modules/

  # Игнорировать папки IDE
  .idea/
  .vscode/

  # Игнорировать системные файлы Windows и macOS
  Thumbs.db
  .DS_Store

  # Игнорировать все файлы с расширением .env (секреты)
  *.env

  # Не игнорировать файл important.env, даже если *.env игнорируются
  !important.env
  

Публикация на GitHub Pages

Чтобы опубликовать сайт на GitHub Pages, создайте ветку gh-pages и запушьте туда статические файлы:

git checkout -b gh-pages
git push origin gh-pages

В настройках репозитория выберите ветку gh-pages для публикации.

Pull Requests и форки

Pull Request — это запрос на внесение изменений из вашей ветки в основной репозиторий. Форки позволяют работать с чужими проектами, создавая их копии.

Работа с форками

Чтобы работать с форком:

  1. Форкните репозиторий на GitHub.
  2. Склонируйте ваш форк.
  3. Создайте новую ветку и сделайте изменения.
  4. Отправьте изменения в форк и создайте Pull Request.

Команда git reset

Команда git reset меняет указатель HEAD и индекс. С ключом:

  • --soft — только HEAD на предыдущий коммит;
  • --mixed — HEAD и индекс;
  • --hard — HEAD, индекс и рабочая директория (удаляет изменения).

Команда git revert

git revert <коммит> создаёт новый коммит, отменяющий изменения указанного коммита, не удаляя историю.