тянуть / толкать из нескольких удаленных мест - PullRequest
681 голосов
/ 11 мая 2009

Коротко: есть ли способ заставить git-репо выдвигать и извлекать из списка удаленных репо (а не из одного "источника")?

Длинное: У меня часто бывает ситуация, когда я разрабатываю приложение на нескольких компьютерах с разной связью - скажем, ноутбук во время транспортировки, компьютер "А", когда я нахожусь в определенное место, а другой компьютер "B", а на другом. Кроме того, ноутбук может иметь связь только с «A» или «B», а иногда и с обоими.

Я хотел бы, чтобы git всегда «извлекал» и «давил» на все компьютеры, к которым он может подключиться в настоящее время, чтобы легче было переходить с одной машины на другую и продолжать бесперебойную работу.

Ответы [ 14 ]

2 голосов
/ 15 декабря 2017

добавить псевдоним для глобального gitconfig (/home/user/.gitconfig) с помощью следующей команды.

git config --global alias.pushall '!f(){ for var in $(git remote show); do echo "pushing to $var"; git push $var; done; }; f'

Как только вы передадите код, мы скажем

git push

чтобы выдвинуть к источнику по умолчанию. После псевдонима мы можем сказать

git pushall

и код будет обновлен для всех пультов, включая исходный.

2 голосов
/ 03 марта 2016

Я хотел работать в VSO / TFS, а затем публично нажать на GitHub, когда будет готов. Начальный репо создан в частном ВСО. Когда пришло время добавлять в GitHub, я сделал:

git remote add mygithubrepo https://github.com/jhealy/kinect2.git
git push -f mygithubrepo master

Работал как чемпион ...

Для проверки работоспособности введите "git remote -v", чтобы получить список хранилищ, связанных с проектом.

C:\dev\kinect\vso-repo-k2work\FaceNSkinWPF>git remote -v
githubrepo      https://github.com/jhealy/kinect2.git (fetch)
githubrepo      https://github.com/jhealy/kinect2.git (push)
origin  https://devfish.visualstudio.com/DefaultCollection/_git/Kinect2Work (fetch)
origin  https://devfish.visualstudio.com/DefaultCollection/_git/Kinect2Work (push)

Простой способ, сработал для меня ... Надеюсь, это кому-нибудь поможет.

1 голос
/ 17 октября 2017

Добавление пульта all становится немного утомительным, так как вам приходится настраивать каждую используемую вами машину.

Кроме того, псевдонимы bash и git при условии, что все они предполагают, что вы нажмете на все пульты. (Например: у меня есть форк sshag, который я поддерживаю на GitHub и GitLab. У меня добавлен upstream remote, но у меня нет разрешения на него.)

Вот git псевдоним , который отправляет только на удаленные устройства с push-URL, который включает @.

psall    = "!f() { \
    for R in $(git remote -v | awk '/@.*push/ { print $1 }'); do \
    git push $R $1; \
    done \
    }; f"
0 голосов
/ 27 апреля 2015

Добавление нового пульта

git remote add upstream https://github.com/example-org/example-repo.git

git remote -vv

Получить из нескольких мест

git fetch --all

Перемещение в локации

git push -u upstream/dev
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...