DevOpsДругой язык

Как загрузить проект на GitHub из папки: init, commit и push по шагам

Загружаем существующую папку на GitHub через git init, add, commit, remote и push, проверяем ветку main и разбираем частые ошибки.

Кодик

Автор

6 мин чтения

Чтобы загрузить существующую папку на GitHub, создайте пустой репозиторий без README, выполните в папке git init, добавьте нужные файлы, создайте первый коммит, подключите origin и отправьте ветку main. Самый важный шаг происходит до push: проверьте git status и .gitignore, чтобы не отправить .env, ключи, зависимости и временные файлы. GitHub не заменяет локальную проверку состава коммита.

Git хранит историю проекта локально, а GitHub размещает удалённую копию и интерфейс для совместной работы. Команды init, add и commit не требуют интернета. Сеть нужна на этапе подключения удалённого адреса и push. Разделение помогает понять, где именно возникла ошибка.

1Подготовить

Выбрать корневую папку и исключить секреты через .gitignore.

2Зафиксировать

Создать локальный репозиторий и первый проверенный коммит.

3Отправить

Подключить URL GitHub и выполнить первый push ветки main.

Подготовка папки и пустого репозитория GitHub

Откройте терминал именно в корне проекта, где находятся главный файл и конфигурация. Команда pwd на macOS и Linux либо Get-Location в PowerShell покажет текущий путь. На GitHub создайте новый репозиторий и для чистого сценария не добавляйте README, лицензию и файл gitignore: иначе удалённая история начнётся отдельным коммитом.

cd path/to/my-project
git init
git branch -M main
git status

# On branch main
# No commits yet
# Untracked files: ...
Что проверитьКоманда или файлОжидаемый результат
Текущая папкаpwd или Get-LocationКорень одного проекта
Git доступенgit --versionНомер установленной версии
Репозиторий созданgit statusВетка и список файлов
Имя веткиgit branch --show-currentmain
Удалённый репозиторийСтраница GitHubПустой репозиторий и точный URL

Путь локального проекта через Git commit к репозиторию GitHub
Сначала создаётся локальная история, затем коммиты отправляются в удалённый репозиторий.

Не запускайте git init уровнем выше. Если создать репозиторий в общей папке Documents, git status может показать соседние проекты и личные файлы. До git add убедитесь, что корень ограничен одной задачей. Если вывод неожиданно большой, остановитесь и проверьте путь.

Что добавить в файл gitignore до первого коммита

Безопасная ревизия файлов
  1. Найдите файлы .env, приватные ключи, токены и локальные конфиги.
  2. Исключите каталоги зависимостей вроде node_modules и виртуальной среды.
  3. Исключите логи, кэш редактора, результаты сборки и системные файлы.
  4. Выполните git status --short и прочитайте каждую группу путей.
  5. Добавьте файлы через git add, затем проверьте staged-состав ещё раз.
  6. Если секрет уже попал в индекс, удалите его из индекса до коммита и замените секрет.

.gitignore действует только на неотслеживаемые файлы. Если секрет уже был добавлен или закоммичен, простая новая строка не удалит его из истории. Поэтому первый просмотр особенно ценен. Не копируйте огромный шаблон вслепую: исключения должны соответствовать стеку проекта и не скрывать исходники.

# .gitignore для небольшого Node.js проекта
node_modules/
.env
.env.*
!.env.example
dist/
*.log
.DS_Store
.vscode/

Проверка файлов проекта перед первым коммитом Git
Индекс должен содержать исходники, а секреты и состояние компьютера остаются снаружи.

Коммит должен содержать исходники, а не состояние компьютера

После git add . выполните git diff --cached --stat и git diff --cached. Первый вывод показывает объём, второй содержимое. Только после осознанного просмотра создавайте коммит.

Первый commit, remote и push

Создайте коммит локально, затем подключите HTTPS или SSH-адрес пустого репозитория. Имя origin является соглашением, а не магическим сервером. Флаг -u у первого push связывает локальную ветку main с удалённой, поэтому дальше обычно достаточно команды git push.

КомандаЧто меняетсяГде
git add .Файлы попадают в индексЛокально
git commit -m "Initial commit"Создаётся снимок историиЛокально
git remote add origin URLСохраняется адрес GitHubЛокально
git push -u origin mainКоммиты отправляются на серверЛокально и GitHub
Обновление страницыПроверяются файлы и веткаGitHub
git add .
git diff --cached --stat
git commit -m "Initial commit"
git remote add origin https://github.com/USER/PROJECT.git
git remote -v
git push -u origin main

Команды commit remote и push и области их действия
Разделение локальных и сетевых шагов помогает точно найти место ошибки.

Пароль аккаунта не является паролем для git push по HTTPS. GitHub использует современные способы аутентификации, например вход через менеджер учётных данных, персональный токен или SSH-ключ. Не вставляйте токен в URL и не сохраняйте его в файлах проекта. Если терминал просит учётные данные, настройте выбранный официальный способ один раз.

Как исправить remote already exists и rejected

Сообщение remote origin already exists означает, что адрес с таким именем уже сохранён. Посмотрите git remote -v и при необходимости измените URL. Ошибка rejected обычно появляется, когда удалённая ветка содержит коммиты, которых нет локально, например автоматически созданный README.

Повторять remote add

Сначала посмотрите текущий адрес. Для замены используйте git remote set-url origin URL.

Применять force при rejected

Можно уничтожить удалённую историю. Сначала выясните, какие коммиты уже находятся на GitHub.

Коммитить файл окружения

Удаление последним коммитом не отменяет утечку. Секрет нужно немедленно заменить и очистить историю.

Загружать node_modules

Зависимости восстанавливаются из манифеста. Каталог замедляет историю и создаёт платформенный мусор.

Ошибка push почти всегда описывает расхождение состояний

Проверьте git status, git branch -vv и git remote -v. Эти три команды показывают рабочее дерево, связь ветки и адрес сервера. Не запускайте команды с --force, пока не можете объяснить, какой коммит будет удалён.

Проверка проекта после загрузки

Откройте репозиторий в приватном окне браузера, если он публичный, и убедитесь, что видны только ожидаемые файлы. README должен объяснять запуск, а .env.example перечислять названия переменных без реальных значений. Затем клонируйте проект во временную папку и проверьте, что он собирается по инструкции.

Чек-лист готового репозитория
  1. На GitHub выбрана ветка main и виден первый коммит.
  2. В истории нет .env, ключей, токенов и файлов с паролями.
  3. node_modules, виртуальная среда и результаты сборки не загружены.
  4. README содержит назначение проекта и команды установки и запуска.
  5. Свежий git clone создаёт рабочую копию без ручного переноса файлов.
  6. Следующее изменение отправляется обычными git add, commit, push.
GitHub не является резервной копией незакоммиченных файлов. push отправляет коммиты, а не всё содержимое диска. Если файл изменён, но не добавлен и не закоммичен, на GitHub его новой версии не будет. Всегда начинайте проверку с git status.
Короткие ответы
Нужен ли интернет для git commit?

Нет. Коммит создаётся в локальном репозитории. Интернет нужен для обращения к GitHub.

Зачем создавать пустой репозиторий без README?

Так локальная и удалённая история не начинают жизнь с разных первых коммитов.

Что делает флаг -u?

Связывает текущую локальную ветку с удалённой веткой, после чего достаточно обычного git push.

Что делать при origin already exists?

Посмотреть git remote -v и при необходимости заменить адрес через git remote set-url.

Можно ли удалить опубликованный секрет обычным новым коммитом?

Нет, он остаётся в истории. Секрет нужно отозвать или заменить, затем отдельно очистить историю.

Сделайте репозиторий воспроизводимым

Пройдите курс Git и закрепите основу в статье про первые команды Git. Если различие сервисов ещё путается, откройте разбор Git и GitHub.

После первого push полезно понять коммит как сохранение в игре. В Кодике можно подготовить README и проверить команды запуска на чистой копии до того, как вы поделитесь ссылкой.