Извлечение всех удаленных веток в пустой Git-репозиторий - PullRequest
13 голосов
/ 05 октября 2010

Я установил перехват Github после получения, который запускает сценарий на моем веб-сервере каждый раз, когда в мой Github-репозиторий делается push.

Когда скрипт запускается, я хочу, чтобы он оставался локальным пустымклон репозитория синхронизирован с моим Github-репозиторием.Чтобы сделать это, я должен запустить эту команду:

git fetch origin && git reset --soft refs/remotes/origin/master

Затем, если с моей рабочей станции я нажимаю на мастер на Github, все работает просто отлично.Однако, если я нажму на другую удаленную ветку, изменения не будут отражены в локальном пустом репозитории моего сервера.

Я предполагаю, что есть какой-то способ получить скрипт, извлекающий все удаленноговетви, но я не знаю, как это сделать.Я знаю, что в более новых версиях git есть опция --all для fetch / pull, но я использую git версии 1.6.3.3, которая, кажется, не имеет этой опции.

Кто-нибудь знает, как я могуполучить мой скрипт для извлечения всех удаленных веток?

Спасибо!

Ответы [ 3 ]

24 голосов
/ 24 января 2014

git fetch origin '*:*' работал для меня.

1 голос
/ 06 октября 2010

Возможно, вы используете сценарий оболочки?

#!/bin/sh

for i in `git remote show`; do
    git fetch $i;
done;

Примечание: небольшая ошибка терминологии в вашем вопросе: опция git fetch|pull *1005* выбирает все «удаленные», а не «удаленные ветви».

0 голосов
/ 07 октября 2010

Думаю, я предоставлю свое собственное решение, пока я на нем. Я принял Рамкумара, хотя, поскольку это было вдохновением для этого. Разница в том, что я не хочу получать данные со всех пультов, а с каждой удаленной ветви в "origin" ...


#!/bin/bash
REMOTE_BRANCHES=$(git branch -r | awk -F'/' '{print $2}')
for i in $REMOTE_BRANCHES; do
    git fetch origin $i
done

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: еще не реализовали это, но оно должно быть близко.

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