14 — Пустой репозиторий и начало работы с git
Если вы создали репозиторий, не отметив Инициализировать репозиторий, вы попадаете на пустой репозиторий с краткой инструкцией. Эта глава — тот самый экран целиком.
Ваши адреса
Вверху страницы пустого репозитория есть два адреса:
HTTPS https://forge.kabaforce.com/owner/project.git
SSH [email protected]:owner/project.git
HTTPS работает с токеном, SSH — с ключом (глава 10). Оба ведут в один и тот же репозиторий, и позже их можно поменять.
Совсем новый репозиторий
Если на вашей машине ещё нет git-репозитория:
mkdir project && cd project
git init
git switch -c main
echo "# project" > readme.md
git add readme.md
git commit -m "первый коммит"
git remote add origin https://forge.kabaforce.com/owner/project.git
git push -u origin main
-u нужен только при первой отправке; дальше хватает git push.
Отправить существующий локальный репозиторий
Если в папке уже есть .git, не начинайте заново:
cd existing-project
git remote add origin https://forge.kabaforce.com/owner/project.git
git push -u origin main
Если ветка называется master, отправьте её как есть или сначала переименуйте:
git branch -m master main
Сменить адрес удалённого репозитория
После переезда или при переходе между HTTPS и SSH:
git remote -v # куда он смотрит сейчас
git remote set-url origin [email protected]:owner/project.git
Почему с инициализацией проще
Отметка Инициализировать репозиторий создаёт первый коммит с README.md — можно сразу клонировать и работать:
git clone https://forge.kabaforce.com/owner/project.git
На экране создания также предлагаются шаблон .gitignore и лицензия — оба можно добавить вручную позже, но выбор сразу экономит шаг.
Если первая отправка не проходит
| Сообщение | Причина |
|---|---|
Authentication failed | Вы ввели пароль; по HTTPS нужен токен (глава 10) |
Permission denied (publickey) | Ваш SSH-ключ не добавлен в учётную запись |
src refspec main does not match any | Ещё нет ни одного коммита — сделайте git commit |
failed to push some refs | На сервере есть коммиты, которых нет у вас — git pull, затем снова |