Инициализация репозитория
Для начала работы с 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 <название_ветки>
Связывание локального и удалённого репозитория
Добавить удалённый репозиторий (например, GitHub):
git remote add origin <URL репозитория>
Отправить изменения в удалённый репозиторий:
git push -u origin main
Правила игнорирования файлов в 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 — это запрос на внесение изменений из вашей ветки в основной репозиторий. Форки позволяют работать с чужими проектами, создавая их копии.
Работа с форками
Чтобы работать с форком:
- Форкните репозиторий на GitHub.
- Склонируйте ваш форк.
- Создайте новую ветку и сделайте изменения.
- Отправьте изменения в форк и создайте Pull Request.
Команда git reset
Команда git reset меняет указатель HEAD и индекс. С ключом:
--soft— только HEAD на предыдущий коммит;--mixed— HEAD и индекс;--hard— HEAD, индекс и рабочая директория (удаляет изменения).
Команда git revert
git revert <коммит> создаёт новый коммит, отменяющий изменения указанного коммита, не удаляя историю.