git удаляет ветку разработки с удаленного git-сервера - PullRequest
5 голосов
/ 28 января 2012

Я создал ветку, работал над ней, слил ее с базовой веткой и теперь хочу ее удалить. Филиал также был создан на удаленном сервере git.

Теперь, когда я запустил git branch -d branch, он удалил его, и я нажал его. Но я все еще вижу ветку на удаленном сервере git.

Я видел аналогичную проблему ранее, когда создавал эту ветку, но не смог увидеть ее на удаленном сервере git.

Я даже могу оформить заказ из этой ветки.

Я что-то здесь упускаю?

Ответы [ 3 ]

10 голосов
/ 29 февраля 2012

Чтобы расширить эти ответы, каждая ветвь в основном существует в трех местах:

  • На удаленном сервере, например origin/foo
  • Ваша локальная копия origin/foo (которая обновляется с помощью git fetch)
  • Локальная ветвь foo (которая обновляется с помощью git merge origin/foo после git fetch - или, более часто, оба выполняются вместе с помощью git pull).

git branch -d удаляет последний из этих трех, а именно локальную ветвь. git branch -d -r удалит вашу копию из удаленной ветви (или вы можете запустить git remote prune origin после удаления локальных ветвей).

Чтобы удалить ветку на удаленном сервере, вы должны использовать git push. Старый синтаксис для этого git push origin :branchname. Это связано с тем, что синтаксис localref:remoteref, например, можно перенести локальную ветку на вашем компьютере в удаленную ветку с другим именем, например, git push origin localbranch:remotebranch. Если вы оставите часть localbranch пустой, вы дадите команду git выдвинуть ничто в удаленную ветвь, удалив ее.

Если это сбивает с толку, не волнуйтесь, разработчики git согласны с вами. В более новых версиях есть опция --delete, поэтому git push origin --delete branchname делает то же самое, что и git push origin :branchname, но ее цель гораздо более ясна.

7 голосов
/ 28 января 2012

Для удаления ветки на пульте

git push remote :refs/heads/development
3 голосов
/ 28 января 2012

Вы удаляете удаленную ветвь с помощью следующей тайной команды:

git push origin :newfeature

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

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