← Назад к вопросам

Что такое Git и какие основные команды вы используете?

1.0 Junior🔥 261 комментариев
#Git и VCS

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое Git и какие основные команды вы используете?

Git — это распределённая система контроля версий (Version Control System, VCS), которая позволяет отслеживать изменения в коде, сотрудничать с другими разработчиками и управлять историей проекта. Git является стандартом в индустрии и необходимым инструментом для любого разработчика.

Что такое Git?

Git — это:

  • Распределённая система — каждый разработчик имеет полную копию истории проекта
  • Система управления версиями — отслеживает все изменения в файлах
  • Инструмент сотрудничества — позволяет команде работать над одним проектом
  • Инструмент отката — можно вернуться к любому предыдущему состоянию кода

Основные команды Git

1. Инициализация и клонирование

# Инициализировать новый Git репозиторий в текущей директории
git init

# Клонировать существующий репозиторий
git clone https://github.com/username/repo.git

# Клонировать в конкретную директорию
git clone https://github.com/username/repo.git my-folder

2. Проверка статуса и просмотр изменений

# Показать текущее состояние репозитория
git status

# Показать различия между рабочей директорией и последним коммитом
git diff

# Показать различия между индексом (staged) и последним коммитом
git diff --staged

# Показать историю коммитов
git log

# Показать историю одной строки (компактный вывод)
git log --oneline

# Показать историю последних N коммитов
git log -n 5

3. Работа с индексом (Staging Area)

# Добавить конкретный файл в индекс
git add filename.py

# Добавить все изменённые файлы в индекс
git add .

# Добавить интерактивно (выбрать какие части файла добавить)
git add -p

# Удалить файл из индекса (но оставить в рабочей директории)
git reset filename.py

# Удалить все файлы из индекса
git reset

4. Создание коммитов

# Создать коммит с сообщением
git commit -m "Описание изменений"

# Создать коммит и добавить сразу все отслеживаемые файлы
git commit -am "Описание изменений"

# Добавить изменения в последний коммит (без создания нового)
git commit --amend

# Переписать сообщение последнего коммита
git commit --amend -m "Новое сообщение"

5. Работа с ветками (Branches)

# Показать все локальные ветки
git branch

# Показать все ветки (локальные и удалённые)
git branch -a

# Создать новую ветку
git branch feature/new-feature

# Переключиться на ветку
git checkout feature/new-feature

# Создать и переключиться на новую ветку в одной команде
git checkout -b feature/new-feature

# Удалить ветку локально
git branch -d feature/new-feature

# Удалить ветку принудительно
git branch -D feature/new-feature

# Переименовать текущую ветку
git branch -m new-name

6. Слияние веток (Merging)

# Слить ветку в текущую
git merge feature/new-feature

# Слить без создания merge commit (fast-forward)
git merge --ff-only feature/new-feature

# Слить с созданием merge commit даже для fast-forward
git merge --no-ff feature/new-feature

7. Работа с удалённым репозиторием (Remote)

# Показать список удалённых репозиториев
git remote -v

# Добавить новый удалённый репозиторий
git remote add origin https://github.com/username/repo.git

# Изменить URL удалённого репозитория
git remote set-url origin https://github.com/username/new-repo.git

# Получить изменения из удалённого репозитория (без слияния)
git fetch

# Получить изменения и слить в текущую ветку
git pull

# Отправить коммиты в удалённый репозиторий
git push

# Отправить конкретную ветку
git push origin feature/new-feature

# Отправить все ветки
git push --all

# Удалить ветку в удалённом репозитории
git push origin --delete feature/new-feature

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

# Откатить изменения в файле (вернуть его к состоянию последнего коммита)
git checkout -- filename.py

# Откатить все изменения
git checkout -- .

# Отменить последний коммит (оставляя изменения в рабочей директории)
git reset --soft HEAD~1

# Отменить последний коммит (отбросив изменения)
git reset --hard HEAD~1

# Отменить конкретный коммит (создавая новый обратный коммит)
git revert <commit-hash>

9. Временное сохранение (Stash)

# Временно сохранить изменения
git stash

# Показать список сохранённых изменений
git stash list

# Применить последнее сохранённое изменение
git stash pop

# Применить конкретное сохранённое изменение
git stash apply stash@{0}

# Удалить сохранённое изменение
git stash drop stash@{0}

10. Перезаписание истории (Rebase)

# Перемотать текущую ветку на последние изменения из другой ветки
git rebase main

# Интерактивный rebase (редактировать историю)
git rebase -i HEAD~3

# Отменить rebase
git rebase --abort

Типичный рабочий цикл

# 1. Создать новую ветку для фичи
git checkout -b feature/user-authentication

# 2. Внести изменения в файлы
# ... редактируешь код ...

# 3. Проверить статус
git status

# 4. Добавить изменения в индекс
git add .

# 5. Создать коммит
git commit -m "Add user authentication feature"

# 6. Получить последние изменения из main
git fetch origin
git rebase origin/main  # или git merge origin/main

# 7. Отправить ветку на сервер
git push origin feature/user-authentication

# 8. Создать Pull Request через GitHub/GitLab/Bitbucket
# (через веб-интерфейс)

# 9. После одобрения и merge, удалить ветку
git branch -d feature/user-authentication

Лучшие практики

# 1. Частые коммиты с понятными сообщениями
git commit -m "Fix: resolve issue with user login validation"
git commit -m "Feature: add email notification system"
git commit -m "Refactor: simplify database connection pool"

# 2. Использовать ветки для каждой фичи
git checkout -b feature/new-endpoint
git checkout -b bugfix/fix-calculation-error

# 3. Синхронизироваться с главной веткой перед push
git fetch origin
git rebase origin/main
git push origin feature/new-endpoint

# 4. Писать понятные commit messages
# ❌ Плохо: "fix", "asdasd", "update"
# ✅ Хорошо: "Fix: handle edge case in payment calculation"
#           "Add: new API endpoint for user preferences"
#           "Refactor: simplify authentication logic"

.gitignore

# Исключить файлы и директории из Git
# файл .gitignore в корне проекта:

__pycache__/
*.pyc
.env
.venv/
venv/
dist/
build/
*.egg-info/
.idea/
.vscode/
node_modules/

Заключение

Git — это критический инструмент в современной разработке. Понимание основных команд и рабочего цикла Git необходимо для:

  • Сотрудничества в команде
  • Отслеживания изменений в коде
  • Управления версионированием
  • Откатывания ошибок

Практикуйся регулярно с Git, и со временем это станет вторым природным для тебя инструментом.