Базовые команды Git: `clone`, `add`, `commit`, `push`, `pull`

Теперь, когда мы понимаем, зачем нужен контроль версий, и знаем, что Git — это стандарт в современной разработке, пришло время научиться использовать его в повседневной работе. 🚀

В этой теме мы освоим пять основных команд, которые будут сопровождать вас каждый день на работе: clone, add, commit, push и pull. Это — фундаментальный цикл работы с Git, который повторяется снова и снова.


Основные команды Git: ваш ежедневный рабочий цикл

Представим, что вы приступаете к новому проекту. Первое, что нужно сделать — получить код. Затем вы вносите изменения, сохраняете их, и отправляете обратно, чтобы коллеги могли увидеть вашу работу.

Вот как это выглядит в терминах Git:

  1. git clone — получить копию проекта
  2. git add — выбрать, какие изменения сохранить
  3. git commit — зафиксировать изменения локально
  4. git push — отправить изменения в общий репозиторий
  5. git pull — получить изменения от других

Эти команды — основа. Их вы будете использовать каждый день.


Шаг 1: git clone — получение репозитория

Когда вы начинаете работать над проектом, скорее всего, он уже существует. Ваша задача — скопировать его к себе на компьютер.

Для этого используется команда:

git clone https://github.com/username/project.git

Здесь https://github.com/username/project.git — это адрес удалённого репозитория (remote repository).

Удалённый репозиторий — это копия проекта, хранящаяся на сервере (например, на GitHub, GitLab). Она позволяет команде обмениваться изменениями.

После выполнения clone у вас появится папка с проектом, в которой уже настроена вся структура Git. Теперь вы можете работать с кодом локально.


Шаг 2: git add и концепция индекса

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

Перед тем как зафиксировать изменения, нужно добавить их в индекс.

Индекс (staging area) — это промежуточная зона, куда вы помещаете изменения перед тем, как сделать коммит. Это как «черновик» перед публикацией.

Представьте: вы пишете статью и выбираете, какие абзацы уже готовы к публикации. Так и в Git — вы решаете, что именно включить в следующий коммит.

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

git add hello.py

Если нужно добавить все изменённые файлы:

git add .

⚠️ Ошибка новичков: пропустить add и сразу сделать commit.
Git не зафиксирует изменения, которые не в индексе.
Это как попытка отправить письмо, не добавив текст.


Шаг 3: git commit — фиксация изменений

Теперь, когда изменения в индексе, можно зафиксировать их локально:

git commit -m "Добавлен файл hello.py"

Ключ -m позволяет добавить сообщение — краткое описание изменений.

💡 Хорошее сообщение: "Добавлен файл hello.py"
Плохое сообщение: "Изменения", "fix", "test"

commit создаёт снимок (snapshot) состояния проекта. Он хранится в вашем локальном репозитории — на вашем компьютере.

⚠️ Важно: commit — это локальное действие. Другие разработчики не видят ваш коммит, пока вы не отправите его в удалённый репозиторий.


Шаг 4: git push — отправка в удалённый репозиторий

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

git push origin main

Здесь:

  • origin — стандартное имя удалённого репозитория
  • main — ветка (по умолчанию)

🔄 На практике часто используется git push без аргументов — Git запомнит настройки после первого раза.

После push ваш коммит появляется на GitHub. Коллеги могут его увидеть, проверить и использовать.


Шаг 5: git pull — получение чужих изменений

Пока вы работали, кто-то другой мог внести свои правки. Чтобы синхронизировать вашу копию с последними изменениями, используйте:

git pull origin main

Команда pull делает две вещи:

  1. Забирает новые коммиты с удалённого репозитория (fetch)
  2. Объединяет их с вашей локальной веткой (merge)

💡 Представьте, что вы редактируете Google Docs, и нажимаете «обновить» — pull делает то же самое для кода.


Как всё это работает вместе: практический пример

Давайте пройдём полный цикл.

Представим, вы клонируете учебный репозиторий:

git clone https://github.com/learn-python/git-practice.git
cd git-practice

Создаёте файл hello.py:

print("Hello, Git!")

Теперь — добавляете его в индекс:

git add hello.py

Фиксируете изменения:

git commit -m "Добавлен скрипт приветствия"

И отправляете в удалённый репозиторий:

git push origin main

Отлично! Ваш код теперь в общей базе.


Как проверить, что всё идёт правильно: git status

Перед каждым шагом полезно проверить состояние репозитория:

git status

Эта команда покажет:

  • Какие файлы изменены
  • Что находится в индексе
  • Есть ли несохранённые изменения

🧭 git status — ваш компас в Git. Всегда смотрите сюда, если не уверены, что происходит.


Типичные ситуации и советы

🔁 Всегда делайте pull перед push
Это предотвратит конфликты. Если вы пытаетесь запушить, а в удалённом репозитории есть новые коммиты, Git потребует сначала сделать pull.

📁 Не добавляйте лишнее в коммит
Например, папку venv/ или файлы __pycache__. Для этого используется файл .gitignore, о нём мы поговорим позже.

🧩 Один коммит — одна логическая задача
Лучше сделать несколько маленьких коммитов, чем один огромный. Так проще отслеживать изменения и откатываться.


Подведём итог

Мы изучили пять ключевых команд:

  • clone — получить репозиторий
  • add — добавить изменения в индекс
  • commit — зафиксировать изменения локально
  • push — отправить изменения в удалённый репозиторий
  • pull — получить изменения от других

Также мы разобрали важные понятия:

  • Удалённый репозиторий — хранится на сервере, доступен команде
  • Индекс (staging area) — промежуточная зона перед коммитом

Эти команды — основа вашей ежедневной работы. Их вы будете использовать снова и снова.


Что дальше?

Пока что мы работали в одиночку. Но что произойдёт, если вы и ваш коллега одновременно измените один и тот же файл?

Git сообщит о конфликте слияния, и его нужно будет разрешить.

В следующей теме — Работа с ветками и разрешение конфликтов — мы научимся управлять такими ситуациями и работать в команде без потерь.

Готовы к следующему шагу? 🚀