Получение всех удаленных ветвей в голый репозиторий 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 для получения всех удаленных ветвей?
Спасибо!
Ответы
Ответ 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
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: пока это не реализовано, но оно должно быть близко.