Что это
Удаленный репозиторий — копия проекта на сервере (GitHub, GitLab, Bitbucket, свой сервер). Через него команда обменивается коммитами.
Локальный репозиторий полноценный: коммитить, смотреть историю и переключать ветки можно без сети.
SSH-ключ
Чтобы не вводить пароль, настройте ключ:
ssh-keygen -t ed25519 -C "me@example.com"cat ~/.ssh/id_ed25519.pubСкопируйте содержимое публичного ключа в GitHub: Settings → SSH and GPG keys → New SSH key. Проверка:
ssh -T git@github.comПриватный ключ id_ed25519 никому не передавайте. Альтернатива — HTTPS с токеном доступа (Personal Access Token) вместо пароля.
Получение репозитория
git clone git@github.com:user/project.gitgit clone git@github.com:user/project.git my-foldergit clone --depth 1 git@github.com:user/project.git--depth 1 скачивает только последний коммит, без истории. Подходит для CI и больших проектов.
Подключение существующего проекта
git remote add origin git@github.com:user/project.gitgit remote -vgit push -u origin mainorigin — стандартное имя основного удаленного репозитория. Флаг -u связывает локальную ветку с удаленной, дальше хватит просто git push.
Основные команды
| Команда | Действие |
|---|---|
git fetch | скачать новые коммиты, ничего не меняя в рабочей папке |
git pull | fetch и слияние в текущую ветку |
git push | отправить коммиты на сервер |
git push -u origin ветка | отправить новую ветку и связать с удаленной |
git push origin --delete ветка | удалить удаленную ветку |
git remote -v | список удаленных репозиториев |
git fetch --prune | убрать ссылки на удаленные ветки, которых уже нет |
git fetchgit log HEAD..origin/main --onelinegit pull --rebasegit pushgit pull --rebase переносит ваши локальные коммиты поверх чужих и не создает лишних merge-коммитов. Включить по умолчанию:
git config --global pull.rebase trueЕсли push отклонен
! [rejected] main -> main (fetch first)На сервере есть коммиты, которых нет у вас:
git pull --rebasegit pushForce push
Перезапись истории на сервере:
git push --force-with-lease--force-with-leaseбезопаснее--force: откажет, если кто-то успел запушить свое;- используйте только в своих ветках, например после rebase;
- в
mainи общие ветки никогда не форсите.
Форки и upstream
Чтобы внести вклад в чужой проект:
- Нажмите Fork на GitHub.
- Склонируйте свой форк.
- Добавьте оригинал как
upstream:
git remote add upstream git@github.com:original/project.gitgit fetch upstreamgit switch maingit merge upstream/maingit push origin main- Работайте в ветке и откройте Pull Request в оригинальный репозиторий.
Отслеживание веток
git branch -vvgit switch feature/xgit branch --set-upstream-to=origin/feature/xЕсли ветка есть на сервере, но нет локально, git switch feature/x создаст локальную автоматически.
