2015-12-08 4 views
0

При вызове meld внутри мерзавца репо, я получаю кучу предупреждений до открытия MELD:несвежих удаленные филиалы не очищены от вверх по течению ссылки

# from within a git repo : 
$ meld . 
fatal: bad revision '^origin/branch/one' 
fatal: bad revision '^origin/branch/two' 
fatal: bad revision '^origin/branch/three' 
... 

Это просто предупреждение печатается на STDERR, meld работает отлично после и отображает ожидаемый diff.

В большинстве этих ветвей есть местная проверка, но не соответствующая дистанционная ссылка на origin.
Одна из этих ссылок даже не существует локально (это один очерк от существующей ветки).

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

ответ

0

Проблема была в моей конфигурации репо.

Некоторые местные отделения все еще отслеживания несвежие удаленных филиалов:
файл .git/config все еще содержит разделы:

[branch "branch/one"] 
    remote = origin 
    merge = refs/heads/branch/one 

даже если удаленный филиал branch/one больше не существовало, и моя локальная ссылка origin/branch/one был (правильно) удален.

Я не нашел прямой команды для очистки моих локальных ветвей.
Я надеялся, что git remote prune origin очистит это, но это не так.

Вот способ я нашел, чтобы мои местные отделения прекратить отслеживание несвежие удаленных филиалов:

# enumerate all local branches, and print "branchname upstreamname" : 
git for-each-ref --format="%(refname:short) %(upstream:short)" refs/heads |\ 

# keep branches which track a remotre branch in origin : 
grep "origin/" |\ 

# loop on output : 
while read local remote; do 
    # use any command which fails on an invalid ref : 
    git show $remote -- > /dev/null 
    # if it failed : stop tracking this stale remote 
    if [ $? != 0 ]; then 
    git branch $local --unset-upstream 
    fi 
done 
Смежные вопросы