Как разрешить Git предупредить меня о возможных удаленных ветках? - PullRequest
7 голосов
/ 20 января 2010

Итак, представьте, что у меня есть локальный репозиторий, который я клонировал из какого-то источника.На момент моего первоначального клона источник имел четыре ветви: featureA, featureB, featureC и master .Если я отправлю изменения в источник, которые удаляют ветку featureA , я ожидаю увидеть что-то об этом удаляемом при следующей выдаче:

$ git pull origin

Однако происходит то, что я ничего не вижу, и когда я пытаюсь потянуть эту конкретную ветку вниз с помощью

$ git pull origin originAA

Я получаю следующую ошибку:

Неустранимый: Не удалось найти функцию удаленного ссылкиA
Неустранимый: Удаленный конец неожиданно зависает

Это полностью делаетсмысл, так как ветка была фактически удалена с пульта, так что да, ссылка больше не существует, однако мне интересно, почему я не получил уведомление об этом факте.Мой .git / config для пульта выглядит следующим образом:

[remote "origin"]
fetch = + refs /heads / : refs / remotes/ origin /
url = cjames@svn.perecep.com: /data/git/perecep.git

Я написал небольшой сценарий оболочки, который использует git ls-remote вместе с выводом из git branch -r для обнаружения удаленных ссылок, чьи ветви больше не существуют на сервере, и подсказки мне, если я хочу удалить их, но я 'мне интересно, если я просто делаю что-то здесь по своей сути не так?

Ответы [ 2 ]

3 голосов
/ 20 января 2010

Хорошо, нет необходимости в специальном скрипте. Я думаю, я пропустил эту команду

$ git remote prune origin

Со страницы руководства:

  prune
           Deletes all stale tracking branches under . These stale branches 
           have already been removed from the remote repository referenced by 
           , but are still locally available in "remotes/".

           With --dry-run option, report what branches will be pruned, but do 
           no(sic) actually prune them.
2 голосов
/ 20 января 2010

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

Редактировать: Тангенциально вас могут интересовать опции --track и --no-track для git-branch и переменная branch.autosetupmerge config.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...