Git — основа моей работы с кодом: версионирование, сохранение истории и, прежде всего, разделение публичного и внутреннего. На этой странице рассматривается нюанс GitHub / GitLab, ценность самостоятельно размещённого GitLab и дисциплина работы с репозиториями, которую я применяю ежедневно.

GitHub и GitLab — в чём нюанс

Критерий GitHub GitLab
Модель размещенияSaaS (облако)SaaS или самостоятельный хостинг (on-premise)
Свободное изданиеОблачное предложениеCommunity Edition — открытый исходный код, можно установить у себя
Использование в этом проектеПубличное · обучение · портфолиоВнутреннее · профессиональный код
Непрерывная интеграцияGitHub ActionsВстроенные пайплайны CI/CD
Отличительное преимуществоСообщество, видимостьСуверенитет, полный контроль над данными
Зачем нужен собственный GitLab? Размещение собственного GitLab (Community Edition, открытый исходный код) сохраняет код и его историю вне облака: контроль доступа, сроков хранения и резервного копирования, прямая интеграция с on-premise инфраструктурой и согласованность с подходом суверенитета и соответствия (ISO 27001). GitHub остаётся идеальным для того, что предназначено быть публичным (портфолио, обучение); внутренний GitLab — для того, что должно оставаться под контролем.

Два remote, два назначения

GitHub — публичный
  • Портфолио (веб-развёртывание)
  • Учебные проекты
  • База знаний (приватный репозиторий)
Внутренний GitLab — под контролем
  • Профессиональный код
  • История хранится внутри организации
  • Ограниченный и отслеживаемый доступ
Изоляция на уровне архитектуры: профессиональный код никогда не проходит через публичный репозиторий. Это не просто организационное правило — это структурное разделение remote.

Дисциплина и гигиена репозиториев

Состояние репозиториев (аудит)
ПроектRemoteСтатус
portfolioGitHub✓ Чисто
Обнаруженные лишние файлы
Файл / папкаПроблемаИсправление
.idea/Конфигурация PyCharmgit rm -r --cached .idea/
.venv/Виртуальное окружение Pythongit rm -r --cached .venv/
dist/Сборка PyInstallergit rm -r --cached dist/
*.lnkЯрлыки WindowsИсключить через .gitignore
🎯 Что важно запомнить
  • Всегда создавайте .gitignore до первого git add .
  • Удалённый репозиторий хранит копию отправленной в него истории; резервное копирование и восстановление проекта нужно документировать отдельно
  • Храните токены (PAT) в менеджере учётных данных системы, никогда — в URL
  • Только один активный remote на проект; переименуйте master → main
  • --allow-unrelated-histories для слияния двух историй без общего предка
💻 Первый чистый коммит (workflow)
bash — гигиена + первый push
# 1. .gitignore avant tout
#    .venv/  __pycache__/  .idea/  dist/  build/  *.spec  .env  *.lnk

# 2. Nettoyer le staging si des parasites ont été indexés
git rm -r --cached .idea/ .venv/ dist/

# 3. Branche principale + premier commit
git branch -m master main
git add .
git commit -m "feat: initial commit"

# 4. Remote (token dans le gestionnaire d'identifiants)
git config --global credential.helper manager
git remote add origin https://<gitlab-interne>/<utilisateur>/PROJET.git
git push -u origin main

# 5. Si le remote a déjà un commit initial (README auto)
git pull origin main --allow-unrelated-histories
git push -u origin main

Связанные страницы

Ссылки и источники

КатегорияРесурсURL
Официальная документацияGit — Documentationgit-scm.com/doc
Официальная документацияGitLab — Documentationdocs.gitlab.com
Официальная документацияGitHub Docsdocs.github.com
ЛицензияGit — GPLv2 · GitLab Community Edition — MITgnu.org/licenses/gpl-2.0
Содержимое этой страницыПубликуется под CC BY-SA 4.0creativecommons.org/licenses/by-sa/4.0