Подтвердить что ты не робот

Получение всех удаленных ветвей в голый репозиторий Git

Я установил крюк post-receive Github, который запускает script на моем веб-сервере всякий раз, когда нажимается на мой репозиторий Github.

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

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

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

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

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

Спасибо!

4b9b3361

Ответ 1

Использовать оболочку script возможно?

#!/bin/sh

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

Примечание. Небольшая ошибка терминологии в вашем вопросе: опция --all git fetch|pull выбирает все "удаленные", а не "удаленные ветки".

Ответ 2

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

Ответ 3

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


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

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