Команда git push завершилась ошибкой «rejected», потому что файл был добавлен только локально и не попал в коммит — типичная причина, по которой изменения не появляются в репозитории на GitHub. Чтобы файл действительно оказался на сервере, нужно пройти три обязательных этапа: добавление в индекс (git add), фиксация коммита (git commit) и отправка на удалённый репозиторий (git push).
Есть и более простой путь — загрузка файлов прямо через веб-интерфейс GitHub, без установки Git на компьютер. Ниже разберём оба способа, а также типичные ошибки и способы их решения.
Способ 1: загрузка файла через веб-интерфейс GitHub
Самый быстрый вариант для новичков — кнопка Add file на странице репозитория. Она доступна в любом репозитории, где у вас есть права на запись. Откройте нужный репозиторий, нажмите Add file → Upload files и перетащите файлы в окно браузера или выберите их через диалог.
После загрузки внизу страницы появится форма коммита. В поле Commit changes введите осмысленное описание изменений — например, «Добавлен скрипт обработки данных». Затем выберите, куда попадёт файл: напрямую в основную ветку (main) или в новую ветку с созданием pull request.
- 📂 Upload files — загрузка существующих файлов с компьютера;
- 📝 Create new file — создание файла прямо в редакторе на сайте;
- 📁 Чтобы загрузить папку, перетащите её целиком — структура каталогов сохранится;
- 🔀 Вариант с новой веткой удобен, если изменения нужно сначала проверить.
⚠️ Внимание: через веб-интерфейс есть ограничение на размер загружаемых файлов. Крупные бинарные файлы (архивы, видео, большие базы данных) лучше загружать через Git с использованием Git LFS, иначе push может быть отклонён сервером.
☑️ Загрузка файла через сайт GitHub
Способ 2: добавление файла через командную строку Git
Работа через терминал — основной сценарий для разработчиков. Сначала убедитесь, что локальный репозиторий связан с GitHub: выполните git remote -v и проверьте, что в выводе есть адрес вашего репозитория. Если репозитория локально ещё нет, склонируйте его командой git clone.
Далее последовательность стандартная. Скопируйте файл в папку репозитория и выполните:
git add имя_файла.txt
git commit -m "Добавлен файл имя_файла.txt"
git push origin main
Команда git add . добавляет сразу все новые и изменённые файлы в текущей папке — удобно, когда файлов много. Перед коммитом полезно проверить, что именно попадёт в него, командой git status: она покажет список файлов в индексе и неотслеживаемые файлы.
Что делать, если файл не отправляется: типичные ошибки
Ошибка «failed to push some refs» или «rejected — non-fast-forward» означает, что удалённый репозиторий содержит коммиты, которых нет у вас локально. Решение — сначала выполнить git pull, разрешить возможные конфликты, затем повторить push.
Ошибка аутентификации возникает, если вы используете пароль от аккаунта вместо personal access token. GitHub давно не принимает обычные пароли при работе через HTTPS — токен создаётся в настройках аккаунта в разделе Developer settings → Personal access tokens. Альтернатива — настроить доступ по SSH-ключу.
| Ошибка | Вероятная причина | Решение |
|---|---|---|
| rejected — non-fast-forward | На сервере есть новые коммиты | Выполнить git pull, затем push |
| Authentication failed | Используется пароль вместо токена | Создать personal access token или SSH-ключ |
| file too large | Превышен лимит размера файла | Использовать Git LFS или удалить файл из истории |
| nothing to commit | Файл не добавлен через git add | Выполнить git add перед commit |
Добавление файла в новый (пустой) репозиторий
Если репозиторий только создан и локальной копии нет, порядок немного отличается. Нужно инициализировать Git в папке проекта, связать её с удалённым репозиторием и выполнить первый push:
git init
git add .
git commit -m "Первый коммит"
git branch -M main
git remote add origin https://github.com/имя/репозиторий.git
git push -u origin main
Параметр -u при первом push связывает локальную ветку с удалённой — в дальнейшем достаточно писать просто git push. Адрес репозитория берётся на его странице по кнопке Code.
Что такое файл .gitignore и зачем он нужен
Файл .gitignore перечисляет файлы и папки, которые Git не должен отслеживать: временные файлы, папки сборки, секретные ключи, зависимости вроде node_modules. Создайте его в корне репозитория до первого коммита. Если файл уже попал в историю, одного добавления в .gitignore недостаточно — его нужно удалить из индекса командой git rm --cached.
Чего не стоит загружать на GitHub
Любой файл, попавший в публичный репозиторий и в историю коммитов, может быть скопирован третьими лицами — даже после удаления он остаётся в истории Git. Поэтому перед push проверьте содержимое на наличие чувствительных данных.
- 🔑 Пароли, API-ключи и токены доступа;
- 🗄️ Файлы с персональными данными и базами пользователей;
- ⚙️ Конфигурационные файлы с приватными настройками серверов;
- 📦 Огромные бинарные файлы, раздувающие историю репозитория.
⚠️ Внимание: если секретный ключ уже попал в репозиторий, простого удаления файла недостаточно — ключ остаётся в истории коммитов. Скомпрометированный токен или пароль следует немедленно отозвать и перевыпустить, а историю очистить специальными инструментами.
Альтернативы: GitHub Desktop и IDE
Для тех, кто не любит командную строку, есть приложение GitHub Desktop: добавление файла сводится к перетаскиванию его в папку репозитория, после чего программа покажет изменения, предложит написать сообщение коммита и нажать Push origin. Встроенные средства Git есть и в редакторах — например, в VS Code вкладка Source Control позволяет индексировать файлы, коммитить и отправлять изменения в пару кликов.
Часто задаваемые вопросы
Можно ли добавить файл на GitHub без установки Git?
Да. Используйте веб-интерфейс: кнопка Add file → Upload files на странице репозитория позволяет загрузить файлы прямо из браузера.
Как загрузить целую папку с файлами?
Через сайт — перетащите папку целиком в окно загрузки. Через терминал — скопируйте папку в репозиторий и выполните git add ., затем commit и push.
Почему git push просит пароль, но пароль не подходит?
GitHub не принимает пароль от аккаунта при доступе по HTTPS. Вместо него нужен personal access token, создаваемый в настройках аккаунта, либо настройте SSH-ключи.
Как отменить добавление файла до коммита?
Команда git reset имя_файла уберёт файл из индекса, не удаляя его с диска. После этого git status покажет файл как неотслеживаемый.
Файл добавлен, но на сайте его не видно. Что проверить?
Убедитесь, что push завершился без ошибок, что вы смотрите ту же ветку (например, main), и обновите страницу репозитория. Также проверьте, не отправили ли вы изменения в другой репозиторий или форк.