Git remote
Введение
В этой статье будет использоваться сокращение
УР - удалённый репозиторий.
Из этой статьи вы можете узнать об основных командах git, нужных для работы с удалёнными репозиториями.
Удалённый репозиторий в данном контексте это код, сохраненный на один из онлайн хостингов, основанных на git.
clone: Клонировать удалённый репозиторий
Существует минимум три способа клонировать репозиторий. По умолчанию клонируется main (master), пример клонирования другой ветки - здесь
По HTTPS
git clone https://github.com/company/repo_name.git
По SSH
git clone git@github.com:company/repo_name.git
С помощью GitHub CLI в GitHub
gh repo clone company/repo_name
Если репозиторий публичный эти команды должны работать сходу.
Если репозиторий частный - нужно настроить аутентификацию:
На всякий случай напомню, что авторизация паролем запрещена с 2021-го года
Клонировать определённую ветку можно с помощью опции --branch
git clone --branch test https://github.com/project/repo-name
remote -v
Проверить с каким удалённым репозиторием git связывает локальный репозиторий
git remote -v
origin https://github.com/Name/name.git (fetch)
origin https://github.com/Name/name.git (push)
add origin
Чтобы привязать свой локальный репозиторий к удалённому серверку нужна команда git remote add origin
В общем случае она выглядит следующим образом
git remote add origin https://example.com/repository-name.git
Чаще вид примерно следующий
git remote add origin https://git.company.com/user/projectName.git
Например, для моего репозитория demo на github команда будет выглядеть так
git remote add origin https://github.com/AndreiOlegovich/demo.git
Конечно, предварительно нужно создать проект на сайте сервиса + нужно заранее сделать git init .
remote set-url
Изменить привязанный удалённый репозиторий
git remote set-url origin https://github.com/YourAccount/your project name.git
Проверить изменился ли привязанный репозиторий
git remote -v
origin https://github.com/YourAccount/your project name.git (fetch) origin https://github.com/YourAccount/your project name.git (push)
push
Отправить новые данные на удалённый репозиторий
git push origin master
Enumerating objects: 83, done.
Counting objects: 100% (83/83), done.
Delta compression using up to 4 threads
Compressing objects: 100% (81/81), done.
Writing objects: 100% (83/83), 3.36 MiB | 3.19 MiB/s, done.
Total 83 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To https://github.com/andreiolegovichru/travel-site.git
* [new branch] master -> master
Если нужно делать push из другой ветки - просто напишите её называние вместо master
git push origin some/other/branch_name
Enumerating objects: 30, done. Counting objects: 100% (30/30), done. Delta compression using up to 8 threads Compressing objects: 100% (26/26), done. Writing objects: 100% (26/26), 6.32 KiB | 6.32 MiB/s, done. Total 26 (delta 7), reused 0 (delta 0) remote: remote: To create a merge request for some/other/branch_name, visit: remote: https://gitlab.yourcompany.com/Project/Project/merge_requests/new?merge_request%5Bsource_branch%5D=some%2Fother%2Fbranch_name remote: To gitlab.ssh.com:IAM/IAM.git abcdefdc8..abcdef000 topic/qa/init_perf_test_controller -> topic/qa/init_perf_test_controller
В этом примере удалённый репозиторий находится на
GitLab
и сразу же после push в терминале появляется ссылка, перейдя по которой можно сделать Merge Request
https://gitlab.yourcompany.com/Project/Project/merge_requests/new?merge_request%5Bsource_branch%5D=some%2Fother%2Fbranch_name
Если вы пользуетесь другим сервисом для удалённого размещения репозитория, такой ссылки может не появиться.
pull
Если удалённый репозиторий ушёл вперед и вы хотите обновить свой локальный репозиторий данными с удалённого
git pull origin master
ls-remote
Чтобы получить список веток на удалённом репозитории нужно использовать команду ls-remote
git ls-remote --heads https://github.com/company/repo.git
1b35091f3de8f8c93cecc3b8fcfbdf192f0c34a1 refs/heads/PROJECT-123456-topic 6ba2f48f770ed7e3c7360d70d9b427e7e7a30f49 refs/heads/PROJECT-123457-topic …
Если репозиторий уже клонирован, можно добиться похожего результата перейдя в его директорию и выполнив
git branch -r
origin/PROJECT-123456-topic origin/PROJECT-123457-topic …
git branch -r | grep and
origin/andrei/PROJECT-123458_load_test
Подтянуть удалённую ветку
Допустим, что клонирован репозиторий у которого несколько
веток
.
Клонирование с GitHub по умолчанию получает ветку main (master)
можно указать и другую ветку
но в обоих случаях после клонирования будет доступна одна ветка.
GitHub использую как собирательное название для все сервисов удаленного хранения репозиториев.
git branch
main
Если создать локально другие ветки, они тоже будут видны. Но ветки, созданные коллегами на других машинах, даже если они запушены в github доступны не будут.
Их можно увидеть командой
git branch -r
origin/PROJECT-123456-topic origin/PROJECT-123457-topic …
Чтобы сделать такую ветку доступной локально нужно выполнить
git checkout -b local_name origin/remote_name
local_name может быть любым, но обычно делают таким же как и на github
git checkout -b PROJECT-123456-topic origin/PROJECT-123456-topic
Ветка PROJECT-123456-topic будет скачана с GitHub и станет активной.
РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе
Конец рекламы. Если там пусто считайте это рекламой моей телеги
| Создать бесплатный репозиторий на GitHub |
| Быстрая настройка |
| Доступ к GitHub по ssh |
| GitHub Tokens (classic) |
| Создать бесплатный репозиторий на GitLab |
| Доступ к GitLab по ssh |
Автор статьи: Андрей Олегович
| Git remote | |
| Git | |
| GitHub | |
| Переход с https аутентификации на ssh | |
| GitLab |