Как получить данные из репозитория другого компьютера в Git?

Например, я клонировал исходный репозиторий на двух компьютерах. Затем я вношу некоторые изменения и фиксирую их в локальном репозитории компьютера А. Как теперь перенести эти изменения на компьютер Б? Оба компьютера A и B подключены к сети.

То, что я ищу, будет эквивалентно тому, что кто-то вручную создаст патч и отправит его мне, который я могу применить к своей рабочей копии/локальному репозиторию.


person jeffreyveon    schedule 09.11.2010    source источник
comment
на мой взгляд, это не совсем локальный репозиторий, если он находится на другом компьютере: таким образом, ответ @Antoine лучше соответствует заголовку вашего вопроса…   -  person RubyTuesdayDONO    schedule 04.02.2014
comment
… в то время как ответ @Amber соответствует уточняющим деталям повествования вашего вопроса.   -  person RubyTuesdayDONO    schedule 04.02.2014
comment
Я бы хотел, чтобы на этот вопрос был ответ Windows   -  person Brandon    schedule 12.08.2016


Ответы (7)


Если машина, с которой вы хотите получить доступ, доступна через ssh, вы можете добавить репозиторий на нее как удаленный через ssh, а затем получать с нее, как и с любого удаленного:

$ git remote add repo_b username@host:path/to/repository.git
$ git pull repo_b master

(Вы можете пропустить шаг добавления удаленного и просто указать полный URL-адрес в команде git pull вместо удаленного имени, но если вы собираетесь регулярно получать данные из репозитория, добавление его в качестве удаленного сэкономит ты много пишешь)

person Amber    schedule 09.11.2010
comment
А как насчет толчка от computer_b? отправит ли computer_b изменения как обычно? git толчок? - person Obaid Maroof; 03.04.2014
comment
Для локального репо вы можете использовать то же самое, но указать удаленный путь как file:///local/path/to/repo/.git/ - person exa; 11.11.2015
comment
У меня это не работает, URL-адрес должен быть /path/to/repository/.git/. - person Ayberk Özgür; 04.09.2018

Посмотрите на git pull --help

Это даст что-то вроде git pull /my/other/repository

person Antoine Pelisse    schedule 09.11.2010
comment
В частности, в разделе URL-адреса GIT говорится: Для локальных репозиториев, которые также изначально поддерживаются git, могут использоваться следующие синтаксисы: /path/to/repo.git/, file:///path/to/repo.git/ - person jemmons; 06.05.2013

Вы можете настроить настоящий сервер с демоном git. В противном случае вы можете использовать пакет git, который объединяет внутреннее представление git в файл, который можно разделить с помощью git pull на другом конце.

Например. из документации git, объединяющей все:

git bundle create file.bundle master

Затем, на другом конце, вы можете сделать что-то вроде:

git pull file.bundle HEAD
person Matthew Flaschen    schedule 09.11.2010

Если вы можете подключиться к компьютеру B по ssh, вы можете использовать:

git clone user@host:/path/to/repo

Это позволит удаленное отслеживание через это ssh-соединение и позволит вам использовать git pull/push.

person Benoit Courtine    schedule 09.11.2010

Немного поздно, но, несмотря ни на что, и чтобы расширить ответ Антуана Пелиссе, вы также можете получить с хоста ssh, который имеет то же самое репо с еще парой коммитов, без добавления remote в ваш конфиг:

git pull user@host:/path/to/repo  # while in the local repo folder

Просто для ясности: одно из возможных применений этого — когда у вас есть два хоста (A и B), которые клонировали один и тот же репозиторий с удаленного, и вы зафиксировали некоторые изменения на хосте A и делаете не хотите отправлять их на удаленный (пока), но вместо этого хотите получить эти коммиты с хоста B. Приведенная выше команда синхронизирует ваши репозитории без отправки на удаленный.

person Alex    schedule 20.11.2017
comment
Конечно, вы можете иметь несколько пультов. Итак, на хосте A я бы настроил два пульта: один с именем origin, откуда вы клонировали, и один с именем B, который является репозиторием на хосте B. - person Martin Bonner supports Monica; 19.12.2018
comment
@MartinBonner Я знаю, что вы можете, что ясно указано в принятом ответе. Я просто заявляю, что вам не нужно. Похоже, что принятый ответ был обновлен, чтобы указать то же самое с тех пор. - person Alex; 19.12.2018
comment
Я нахожу это на самом деле невероятно полезным - person Bart van Kuik; 17.03.2020

У меня это сработало для локального репозитория на другом компьютере:

git remote add origin_username [email protected]:/home/username/dev/project/main/.git/

git pull origin_username master

or

git pull origin_username some_branch
person McQuade    schedule 13.07.2016
comment
вы можете перечислить все удаленные ветки, используя: git ls-remote origin_username - person McQuade; 16.08.2016

я придумал

git clone /path/to/local/repository
person Vlad T.    schedule 27.04.2017