Я хотел бы подтолкнуть ветку, только если она отличается от местного мастера. Более конкретно, я не хочу выдвигать ветку, если она указывает на тот же коммит, что и на локальный мастер.
В моей компании есть сотни репозиториев git, и мы не используем подмодули git, поэтому для очистки всей системы у меня есть очень простой скрипт bash:
for gitdir in `find ./ -name .git|sort`;
do
workdir=${gitdir%/*};
cd $workdir
eval "$*"
cd $BASE_DIR
done
что я бегу так:
./for_each_repo.sh 'git checkout -b <bname> && <some command> && git commit -m <message>''
Тогда я могу внести некоторые другие изменения в репозитории.
Наконец я бегу:
./for_each_repo.sh 'git push origin <bname>'
Но его, очевидно ..., толкает также "пустые" ветви (то есть, где я только что создал ветку, но не зафиксировал ее).
Всего 1 ответ
Первый,
git for-each-ref --no-merged=master --format='%(refname:short)' refs/heads
перечислил бы все ветви с новыми коммитами (которые еще не объединены в master
).
Затем вы можете связать это с вашей командой push
git push origin $(git for-each-ref --no-merged=master --format='%(refname:short)' refs/heads)