1. Базовый функционал PyCharm
PyCharm — IDE с встроенным git-плагином. При открытии проекта он автоматически обнаруживает репозиторий Git и показывает информацию о ветках, коммитах и изменениях.
Открыть существующий репозиторий
Если репозиторий уже склонирован:
- Запустить PyCharm.
- Нажать Open.
- Выбрать директорию с репозиторием и нажать OK.
PyCharm откроет проект и автоматически активирует git-плагин — в нижней панели появится информация о текущей ветке.
Клонировать репозиторий через PyCharm (Get from VCS)
Если репозиторий ещё не склонирован — можно сделать это прямо из PyCharm:
- На стартовом экране нажать Get from Version Control (в некоторых версиях: Get from VCS).
- В поле URL вставить ссылку на репозиторий с GitHub (кнопка «Code» → HTTPS).
- Выбрать локальную директорию для сохранения.
- Нажать Clone.
PyCharm скачает репозиторий и автоматически откроет его как проект.
2. Работа с репозиторием в PyCharm
Разберём функционал плагина Git в PyCharm на примере добавления файла monitoring.sh.
Добавить файл в проект
- В панели Project (слева) нажать правой кнопкой на нужную директорию → New → File.
- Ввести имя файла, например
monitoring.sh, и нажать OK. - PyCharm спросит: «Add file to Git?» — нажать Add. Это аналог
git add monitoring.sh.
Commit через git-плагин
- Нажать кнопку Commit в левой панели (или Ctrl+K).
- Откроется панель Commit: слева — список изменённых файлов, справа — поле для сообщения коммита.
- Убедиться, что нужные файлы отмечены галочкой (аналог
git add). - Ввести сообщение коммита в поле «Commit Message».
- Нажать Commit (только коммит, без push) или Commit and Push (коммит + отправка в GitHub).
Плагин Git в PyCharm — это просто удобный интерфейс над стандартными git-командами:
— «Добавить в отслеживание» =
git add <file>— «Commit» =
git commit -m "сообщение"— «Commit and Push» =
git commit -m "..." && git push origin <branch>
История коммитов
После коммита можно увидеть историю: вкладка Git (в нижней панели) → Log. Отображаются все коммиты с авторами и временем. Коммиты, которые ещё не запушены, помечены стрелкой вверх.
Push
Если нажали только «Commit», то для отправки: Git (верхнее меню) → Push (или Ctrl+Shift+K). PyCharm выполнит git push origin <текущая_ветка>.
3. Работа с Pull Request
После того как изменения запушены в форкнутый репозиторий, создаём PR через GitHub:
- Открыть форкнутый репозиторий на GitHub.
- Перейти на вкладку Pull requests.
- Нажать New pull request.
- Выбрать направление: из форкнутого репозитория в исходный (оригинальный). Убедиться, что в «base repository» стоит оригинальный репо, а в «head repository» — ваш форк.
- Добавить основание для открытия PR: обычно это номер Issue. В поле описания написать
#НОМЕР_ISSUE— GitHub автоматически свяжет PR с задачей. - Нажать Create pull request.
- После обсуждения и проверок владелец исходного репозитория принимает изменения — выбирает Rebase and merge.
4. Обновление форкнутого репозитория через upstream
После того как PR влит в исходный репозиторий, форкнутый репозиторий отстаёт от оригинала. Нужно синхронизировать его. Для удобства используем терминал.
Схема работы: оригинальный репо (upstream) → ваш форк (origin) → локальная копия. При обновлении нужно: получить изменения из upstream → применить к локальной копии → отправить в fork.
Шаг 1 — Добавить upstream
Выполняется один раз:
git remote add upstream <URL_оригинального_репозитория>
# Например:
git remote add upstream https://github.com/it-career-hub/learning_git.git
Шаг 2 — Получить изменения из upstream
git fetch upstream
Команда скачивает все коммиты из оригинального репозитория в локальные ветки вида upstream/master, но не применяет их к вашим веткам.
Шаг 3 — Обновить локальную ветку
git checkout master
git merge upstream/master
Применяем изменения из upstream/master к вашей локальной ветке master. Если конфликтов нет — merge пройдёт автоматически.
Шаг 4 — Отправить обновлённую ветку в форк
git push origin master
Ваш форк на GitHub теперь синхронизирован с оригинальным репозиторием.
master может использоваться main или другое имя основной ветки — проверьте в настройках репозитория.