Linux

Как загрузить локальный проект в GitLab: пошаговое руководство для начинающих (и как не допустить утечку секретов)

6 мин. чтения
Как загрузить локальный проект в GitLab: пошаговое руководство для начинающих (и как не допустить утечку секретов)

Вы разработали проект на своём компьютере и теперь хотите сохранить его в GitLab — поделиться с командой или просто иметь надёжное облачное хранилище с контролем версий. Казалось бы, задача простая, но у новичков часто возникают неожиданные трудности: конфликт веток, отказ в push из-за защиты, а иногда и случайная публикация файлов с паролями. В этой статье я подробно, шаг за шагом, расскажу, как правильно загрузить проект в GitLab, обойти все грабли и, если вы уже наступили на некоторые из них, как исправить ситуацию.

 

Содержание

  • Подготовка
  • Создание репозитория на GitLab
  • Локальная инициализация Git и первый коммит
  • Связываем локальный репозиторий с GitLab
  • Отправляем код на сервер
  • Типичные проблемы и их решения
  • Remote origin already exists
  • Ветка master вместо main
  • Push rejected (fetch first)
  • Protected branch error
  • Важнейший раздел: как не допустить утечку секретов (файлы .env)
  • До первого коммита: добавляем .gitignore
  • Если уже запушили .env: экстренные меры
  • Заключение

Подготовка

Прежде всего убедитесь, что у вас установлен Git. Для Windows скачайте и установите Git for Windows — вместе с ним появится удобный терминал Git Bash, в котором работают все команды из статьи.

Также у вас должен быть аккаунт на GitLab.com (или корпоративном GitLab).

Создание репозитория на GitLab

  • Войдите в свой профиль и нажмите кнопку New project.
  • Выберите Create blank project.
  • Важно: снимите галочку "Initialize repository with a README"! Если оставить её, GitLab создаст начальный коммит с README, и потом придётся объединять истории. Пустой репозиторий — то, что нужно для загрузки существующего проекта.
  • Введите название проекта (например, my-awesome-app) и нажмите Create project.

После создания вы увидите страницу с URL вашего репозитория. Он выглядит так:

plaintext
https://gitlab.com/username/my-awesome-app.git (доступ по HTTPS)

или 

plaintext
git@gitlab.com:username/my-awesome-app.git (доступ по SSH)

Скопируйте его — он понадобится чуть позже.

Локальная инициализация Git и первый коммит

Откройте терминал (Git Bash на Windows) и перейдите в папку с вашим проектом:

plaintext
cd /c/Users/Имя/Desktop/проект

Теперь сделаем папку Git-репозиторием и создадим первый коммит:

plaintext
git init # инициализация репозитория git add . # добавляем все файлы в индекс git commit -m "Initial commit" # создаём коммит

Если вы ни разу не настраивали Git, он может попросить представиться:

plaintext
git config --global user.name "Ваше Имя" git config --global user.email "ваш.email@example.com"

Связываем локальный репозиторий с GitLab

Теперь нужно указать Git, где находится удалённый репозиторий (на GitLab). Используйте команду remote add с тем URL, который скопировали ранее:

plaintext
git remote add origin https://gitlab.com/username/my-awesome-app.git

Если вы предпочитаете SSH (и настроили ключи), подставьте SSH-ссылку.

Отправляем код на сервер

Загружаем наши коммиты в GitLab:

plaintext
git push -u origin main

Флаг -u устанавливает связь между вашей локальной веткой main и удалённой, чтобы в будущем можно было писать просто git push.

Если ваша локальная ветка называется mastermain, прочитайте следующий раздел про переименование ветки.

Типичные проблемы и их решения

Даже при точном следовании инструкциям могут возникнуть ошибки. Рассмотрим самые частые.

Remote origin already exists

Ошибка:

error: remote origin already exists.

Причина: 

Вы уже добавляли удалённый репозиторий с именем origin ранее.

Решение:

Проверьте, какой URL привязан:

plaintext
git remote -v

Если URL не тот, замените его:

plaintext
git remote set-url origin https://gitlab.com/username/правильный-проект.git

Если хотите удалить старый origin и добавить заново:

plaintext
git remote remove origin git remote add origin https://gitlab.com/username/правильный-проект.git

Ветка master вместо main

Современные сервисы (в том числе GitLab) используют имя main для основной ветки. Если ваш локальный репозиторий создан давно, ветка может называться master.

Решение: переименуйте локальную ветку:

plaintext
git branch -m master main

Теперь можно пушить как обычно: git push -u origin main.

Push rejected (fetch first)

Ошибка:
! [rejected] main -> main (fetch first)

Причина: удалённый репозиторий содержит коммиты, которых нет у вас локально (например, вы случайно создали проект с README или кто-то другой уже что-то запушил).

Решение 1 (безопасное): скачайте изменения и объедините их:

plaintext
git pull origin main --allow-unrelated-histories

Разрешите возможные конфликты, затем сделайте коммит слияния и запушьте:

plaintext
git push origin main

Решение 2 (если на сервере ничего ценного нет): принудительно перезапишите удалённую ветку своей версией:

plaintext
git push -f origin main

Будьте осторожны: эта команда удалит файлы на сервере и заменит их вашими.

Protected branch error

Ошибка:
remote: GitLab: You are not allowed to push code to protected branches on this project.

Причина: ветка main защищена от прямых изменений (настройки по умолчанию для главной ветки).

Решение:

  • Зайдите в проект на GitLab.
  • Перейдите Settings → Repository → Protected branches.
  • Найдите ветку main и нажмите Unprotect (или отредактируйте, разрешив push для разработчиков/мейнтейнеров).
  • После этого повторите git push.

Важнейший раздел: как не допустить утечку секретов (файлы .env)

Файлы .env содержат пароли, токены, ключи API — то, что никогда не должно попадать в репозиторий. Если вы случайно запушили такой файл, считайте, что все секреты скомпрометированы. Действовать нужно немедленно.

До первого коммита: добавляем .gitignore

Лучший способ избежать проблемы — вообще не добавлять .env в Git. Для этого создайте в корне проекта файл .gitignore и пропишите в нём:

plaintext
.env .env.*

Затем выполните git add .gitignore и закоммитьте. Теперь Git будет игнорировать любые файлы, начинающиеся с .env.

Если уже запушили .env: экстренные меры

Вы обнаружили, что файлы .env уже в репозитории и даже на сервере. Что делать?

Шаг 1. Немедленно смените все пароли и токены!
Даже после удаления файлов из Git старые коммиты остаются в истории. Любой, у кого есть доступ к репозиторию, может их найти. Поэтому смените все секреты, которые были в .env.

Шаг 2. Удалите .env из отслеживания и добавьте в .gitignore

plaintext
# Добавляем .env в .gitignore echo ".env" >> .gitignore echo ".env.*" >> .gitignore # Удаляем все .env файлы из индекса Git (но оставляем на диске) git ls-files | grep "\.env" | xargs -r git rm --cached

Шаг 3. Создайте коммит с этими изменениями

plaintext
git add .gitignore git commit -m "Remove .env files from tracking"

Шаг 4. Перепишите историю, чтобы полностью удалить секреты (если это критично)
Если вы хотите не просто убрать файлы из последнего коммита, а вычистить их из всей истории, используйте специальные инструменты, например BFG Repo-Cleaner.

  • Скачайте bfg.jar с официального сайта.
  • Временно удалите remote, чтобы случайно не запушить во время чистки:
plaintext
git remote remove origin
  • Запустите BFG из папки проекта:

    plaintext
    java -jar /путь/к/bfg.jar --delete-files .env
  • Очистите репозиторий:
plaintext
git reflog expire --expire=now --all && git gc --prune=now --aggressive
  • Верните remote и принудительно запушьте исправленную историю:
plaintext
git remote add origin https://gitlab.com/username/my-awesome-app.git git push --force-with-lease origin main

Внимание: после переписывания истории всем, кто работает с репозиторием, нужно выполнить git pull с флагом --force (или переклонировать репозиторий).

Альтернативный простой способ: пересоздать репозиторий
Если проект только начинается и история не важна, проще удалить репозиторий на GitLab и загрузить всё заново, предварительно настроив .gitignore. Для этого:

  • Удалите папку .git локально (rm -rf .git).
  • Заново выполните git init, git add ., git commit.
  • Создайте новый пустой проект на GitLab и запушьте.

Заключение

Загрузка проекта в GitLab — процесс несложный, но требующий внимания к деталям. Самое главное:

  • Всегда создавайте пустой репозиторий на сервере (без README).
  • Сразу настраивайте .gitignore, чтобы случайно не закоммитить секреты.
  • Если столкнулись с ошибками — не паникуйте, у каждой есть простое решение.

Надеюсь, это руководство помогло вам успешно разместить код на GitLab и избежать утечки важных данных. Сохраняйте статью в закладки — она пригодится не раз.

Теги статьи

Новые статьи на почту

Без спама, только полезное

Подписываясь, вы соглашаетесь с политикой конфиденциальности

Читайте также