Как сделать пу sh ветку, только если она отличается от основной? - PullRequest
0 голосов
/ 11 февраля 2020

Цель

Я бы хотел сделать ветку sh, только если она отличается от местного мастера. В частности, я не хочу создавать ветку sh, если она указывает на тот же коммит, что и локальный мастер.

Справочная информация

В моей компании сотни 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 Ответ

3 голосов
/ 11 февраля 2020

Во-первых,

git for-each-ref --no-merged=master --format='%(refname:short)' refs/heads

отобразит список всех ветвей с новыми коммитами (которые еще не объединены в master).

Затем вы можете связать это с вашим пу sh команда

git push origin $(git for-each-ref --no-merged=master --format='%(refname:short)' refs/heads)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...