У меня есть несколько филиалов в репо. Я хочу, чтобы oop подумал о каждой ветви, извлеките ветку и запустите команду, которая обновит все пакеты и передаст изменения. В конце концов, я хочу, чтобы pu sh all.
Так что я выяснил, как l oop думал, что ветвь
for BRANCH in `git branch -a | grep remotes/origin/*` ;
do
A="$(cut -d'/' -f3 <<<"$BRANCH")"
echo $A
done
Не уверен, что это лучший способ делая это. Тем не менее, я все еще изо всех сил пытаюсь git оформить ветку и затем продолжить с автоматом c commit.
Любые идеи?
ОБНОВЛЕНИЕ
Основано на ответе @ bk2204 Я сделал еще две вещи: выяснил, как запустить скрипт в контексте другой папки { ссылка }, а затем как автоматически клонировать все удаленные ветви { ссылка }
Вот что я придумал:
#!/bin/sh
cd my-folder #<-- tight to a specific folder
:
set -e
[ -z "$(git status --porcelain)" ] || { echo "working tree not clean" >&2; false; }
#for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
#git branch --track ${branch#remotes/origin/} $branch #<-- throws an error if was already cloned
#done
for branch in $(git for-each-ref refs/heads/* | cut -d"$(printf '\t')" -f2 | cut -b12-)
do
echo $branch
# This will overwrite any changes.
git checkout -f $branch
# Run command here.
rm -rf node_modules
npm i
# run my update thing
git add .
git commit -m "Update packages"
done
Это работает, но теперь у него есть две проблемы:
1) скрипт работает только в указанной папке c поэтому мне всегда приходится изменять путь к папке, если я хочу запустить ее в другой папке
2) если я уже потянул все ветви #git branch --track ${branch#remotes/origin/} $branch
выдает ошибку.
Как бы вы обратились эти проблемы, чтобы иметь возможность запускать сценарий в любой папке и иметь возможность обрабатывать случай, если конкретное удаленное хранилище уже было клонировано?