Чтобы загрузить существующую папку на GitHub, создайте пустой репозиторий без README, выполните в папке git init, добавьте нужные файлы, создайте первый коммит, подключите origin и отправьте ветку main. Самый важный шаг происходит до push: проверьте git status и .gitignore, чтобы не отправить .env, ключи, зависимости и временные файлы. GitHub не заменяет локальную проверку состава коммита.
Git хранит историю проекта локально, а GitHub размещает удалённую копию и интерфейс для совместной работы. Команды init, add и commit не требуют интернета. Сеть нужна на этапе подключения удалённого адреса и push. Разделение помогает понять, где именно возникла ошибка.
Выбрать корневую папку и исключить секреты через .gitignore.
Создать локальный репозиторий и первый проверенный коммит.
Подключить 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-current | main |
| Удалённый репозиторий | Страница GitHub | Пустой репозиторий и точный URL |

Сначала создаётся локальная история, затем коммиты отправляются в удалённый репозиторий.
git status может показать соседние проекты и личные файлы. До git add убедитесь, что корень ограничен одной задачей. Если вывод неожиданно большой, остановитесь и проверьте путь.Что добавить в файл gitignore до первого коммита
- Найдите файлы
.env, приватные ключи, токены и локальные конфиги. - Исключите каталоги зависимостей вроде
node_modulesи виртуальной среды. - Исключите логи, кэш редактора, результаты сборки и системные файлы.
- Выполните
git status --shortи прочитайте каждую группу путей. - Добавьте файлы через
git add, затем проверьте staged-состав ещё раз. - Если секрет уже попал в индекс, удалите его из индекса до коммита и замените секрет.
.gitignore действует только на неотслеживаемые файлы. Если секрет уже был добавлен или закоммичен, простая новая строка не удалит его из истории. Поэтому первый просмотр особенно ценен. Не копируйте огромный шаблон вслепую: исключения должны соответствовать стеку проекта и не скрывать исходники.
# .gitignore для небольшого Node.js проекта
node_modules/
.env
.env.*
!.env.example
dist/
*.log
.DS_Store
.vscode/
Индекс должен содержать исходники, а секреты и состояние компьютера остаются снаружи.
После 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
Разделение локальных и сетевых шагов помогает точно найти место ошибки.
Как исправить remote already exists и rejected
Сообщение remote origin already exists означает, что адрес с таким именем уже сохранён. Посмотрите git remote -v и при необходимости измените URL. Ошибка rejected обычно появляется, когда удалённая ветка содержит коммиты, которых нет локально, например автоматически созданный README.
Сначала посмотрите текущий адрес. Для замены используйте git remote set-url origin URL.
Можно уничтожить удалённую историю. Сначала выясните, какие коммиты уже находятся на GitHub.
Удаление последним коммитом не отменяет утечку. Секрет нужно немедленно заменить и очистить историю.
Зависимости восстанавливаются из манифеста. Каталог замедляет историю и создаёт платформенный мусор.
Проверьте git status, git branch -vv и git remote -v. Эти три команды показывают рабочее дерево, связь ветки и адрес сервера. Не запускайте команды с --force, пока не можете объяснить, какой коммит будет удалён.
Проверка проекта после загрузки
Откройте репозиторий в приватном окне браузера, если он публичный, и убедитесь, что видны только ожидаемые файлы. README должен объяснять запуск, а .env.example перечислять названия переменных без реальных значений. Затем клонируйте проект во временную папку и проверьте, что он собирается по инструкции.
- На GitHub выбрана ветка main и виден первый коммит.
- В истории нет
.env, ключей, токенов и файлов с паролями. node_modules, виртуальная среда и результаты сборки не загружены.- README содержит назначение проекта и команды установки и запуска.
- Свежий
git cloneсоздаёт рабочую копию без ручного переноса файлов. - Следующее изменение отправляется обычными
git add,commit,push.
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 и проверить команды запуска на чистой копии до того, как вы поделитесь ссылкой.