Belov Solutions

Работа с удалёнными репозиториями в Git: подробное руководство

Введение в удалённые репозитории

Удалённые репозитории — это версии вашего проекта, хранящиеся в интернете или другой сети. Они позволяют вносить вклад в проект, обмениваться изменениями с другими разработчиками и управлять версиями. Вы можете работать с несколькими удалёнными репозиториями, которые могут быть доступны для чтения или чтения-записи. В этой статье мы рассмотрим, как добавлять, удалять и управлять удалёнными репозиториями, а также получать и отправлять изменения.

Примечание: Удалённый репозиторий не обязательно находится в интернете — он может быть на вашем локальном компьютере. Работа с ним всё равно включает стандартные операции, такие как получение и отправка данных.

Просмотр удалённых репозиториев

Чтобы увидеть список настроенных удалённых репозиториев, используйте команду git remote. Например, после клонирования репозитория вы увидите как минимум origin — имя по умолчанию для сервера, с которого клонировали:

git clone https://github.com/schacon/ticgit
Cloning into 'ticgit'...
remote: Reusing existing pack: 1857, done.
remote: Total 1857 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1857/1857), 374.35 KiB | 268.00 KiB/s, done.
Resolving deltas: 100% (772/772), done.
Checking connectivity... done.
cd ticgit
git remote
origin

Для просмотра URL репозиториев используйте ключ -v:

git remote -v
origin  https://github.com/schacon/ticgit (fetch)
origin  https://github.com/schacon/ticgit (push)

Если у вас несколько удалённых репозиториев, команда покажет их все. Например:

cd grit
git remote -v
bakkdoor  https://github.com/bakkdoor/grit (fetch)
bakkdoor  https://github.com/bakkdoor/grit (push)
cho45     https://github.com/cho45/grit (fetch)
cho45     https://github.com/cho45/grit (push)
defunkt   https://github.com/defunkt/grit (fetch)
defunkt   https://github.com/defunkt/grit (push)
koke      git://github.com/koke/grit.git (fetch)
koke      git://github.com/koke/grit.git (push)
origin    git@github.com:mojombo/grit.git (fetch)
origin    git@github.com:mojombo/grit.git (push)

Это позволяет легко получать изменения от разных пользователей. Обратите внимание на разные протоколы (https, git) в URL.

Добавление удалённых репозиториев

Чтобы добавить новый удалённый репозиторий, используйте git remote add с указанием имени и URL:

git remote
origin
git remote add pb https://github.com/paulboone/ticgit
git remote -v
origin  https://github.com/schacon/ticgit (fetch)
origin  https://github.com/schacon/ticgit (push)
pb  https://github.com/paulboone/ticgit (fetch)
pb  https://github.com/paulboone/ticgit (push)

Теперь вместо полного URL можно использовать имя pb. Например, чтобы получить изменения от Пола:

git fetch pb
remote: Counting objects: 43, done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 43 (delta 10), reused 31 (delta 5)
Unpacking objects: 100% (43/43), done.
From https://github.com/paulboone/ticgit
 * [new branch]      master     -> pb/master
 * [new branch]      ticgit     -> pb/ticgit

Ветка master Пола теперь доступна как pb/master. Вы можете слить её или переключиться на неё для просмотра.

Получение изменений из удалённого репозитория — Fetch и Pull

Для получения данных из удалённого репозитория используйте git fetch:

git fetch [remote-name]

Эта команда загружает данные, которых у вас ещё нет, но не сливает их с вашими изменениями. Например, git fetch origin получает все новые данные с сервера origin, добавленного при клонировании.

Для автоматического получения и слияния изменений используйте git pull, если ветка настроена на отслеживание удалённой ветки:

git pull

По умолчанию git clone настраивает локальную ветку master для отслеживания удалённой master. Примечание: С Git 2.27 git pull требует настройки pull.rebase. Установите её так:

git config --global pull.rebase "false"  # Простое смещение или слияние
git config --global pull.rebase "true"  # Перебазирование

Отправка изменений в удалённый репозиторий (Push)

Для отправки изменений в удалённый репозиторий используйте git push:

git push origin master

Эта команда работает, если у вас есть права на запись и никто другой не отправил изменения раньше. Если ваш push отклонён, сначала получите и слейте изменения с помощью git pull.

Просмотр удалённого репозитория

Для получения подробной информации об удалённом репозитории используйте git remote show:

git remote show origin
* remote origin
  Fetch URL: https://github.com/schacon/ticgit
  Push  URL: https://github.com/schacon/ticgit
  HEAD branch: master
  Remote branches:
    master                               tracked
    dev-branch                           tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

Для более сложного проекта вывод может быть таким:

git remote show origin
* remote origin
  URL: https://github.com/my-org/complex-project
  Fetch URL: https://github.com/my-org/complex-project
  Push  URL: https://github.com/my-org/complex-project
  HEAD branch: master
  Remote branches:
    master                           tracked
    dev-branch                       tracked
    markdown-strip                  tracked
    issue-43                         new (next fetch will store in remotes/origin)
    issue-45                         new (next fetch will store in remotes/origin)
    refs/remotes/origin/issue-11     stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    dev-branch merges with remote dev-branch
    master     merges with remote master
  Local refs configured for 'git push':
    dev-branch                     pushes to dev-branch                     (up to date)
    markdown-strip                 pushes to markdown-strip                 (up to date)
    master                         pushes to master                         (up to date)

Эта команда показывает URL, отслеживаемые ветки, настройки для git pull и git push, а также ветки, которые отсутствуют локально или устарели.

Удаление и переименование удалённых репозиториев

Для переименования удалённого репозитория используйте git remote rename:

git remote rename pb paul
git remote
origin
paul

Это также изменит имена веток, например, pb/master станет paul/master.

Для удаления удалённого репозитория используйте git remote remove:

git remote remove paul
git remote
origin

Это удаляет все связанные с репозиторием ветки и настройки.

Отзывы

Оставить отзыв

Ваша эл. почта не будет опубликована