2013-07-19 5 views
15

Я хочу удалить некоторые удаленные ветви моего репозитория проектов. Я запустить следующую команду:Удалить удаленные ветви в Git

git push origin :name_of_branch 

и когда список удаленных филиалов с

git branch -r 

филиал, который я удалил не появляется, но партнер шахты запустить

git fetch 

, а затем

git branch -r 

и в списке, ветвь name_of_branch, которую я удалил, все еще в списке. Однако, когда он пытается удалить ветвь с

git push origin :name_of_branch 

Он получает следующее сообщение:

error: unable to delete 'name_of_branch': remote ref does not exist 
error: failed to push some refs to 'the_name_of_the_repository' 

Как я мог удалить ветку целиком из списка?

+0

Дубликат [Удалить ветку Git как локально, так и удаленно?] (Http://stackoverflow.com/q/2003505/456814). –

ответ

23

Это происходит потому, что, когда этот партнер ваш работает git fetch делеция ветвь «не применяется» в его хранилище. fetch только обновляет и добавляет ветки.

Они могут запускать git remote prune origin, чтобы обрезать удаленные ветви в их списке, которые больше не существуют в восходящем репозитории.

+4

FYI, 'git remote prune' несколько устарел в пользу' git fetch -prune' или 'git fetch -p'. См. Примечания к выпуску [Git version 1.6.6] (https://github.com/git/git/blob/v2.0.0/Documentation/RelNotes/1.6.6.txt # L162-L166): «[' git fetch --prune' делает] 'git удаленное обновление' и' git удаленное удаление 'менее необходимо (нет плана для удаления 'remote update' или' remote prune', хотя) «. –

9

git fetch --prune <remote> можно использовать для удаления всех ветвей удаленного отслеживания, которые являются ветвями отслеживания, которые больше не существуют в удаленном репозитории (т. Е. Удалены в удаленном). Из official Linux Kernel Git documentation for fetch:

-p

--prune

После извлечения, удалить любые удаленные отслеживания ветвей, которые больше не существуют на пульте дистанционного управления.

Вы можете также удаленный устаревшие ветви удаленного отслеживания с помощью команды

git branch -D -r <remote>/<branch> 

, как указано в the documentation for git branch:

Использование -r вместе с -d удалить удаленные отслеживания ветвей. Обратите внимание, что имеет смысл удалять ветви удаленного отслеживания, если они больше не существуют в удаленном репозитории, или если git fetch был настроен не для их повторного ввода.

Смежные вопросы