2010-11-11 15 views
60

Utworzono gałąź notmaster, aby zatwierdzić i wprowadzić pewne zmiany. Kiedy skończyłem pracę z tą gałęzią, połączyłem zmiany z powrotem w master, wypchnąłem je, a następnie usunąłem lokalny notmaster.Jak usunąć zdalny oddział w Git?

$ git branch -a 
* master 
    remotes/origin/master 
    remotes/origin/notmaster 

Czy mimo to można usunąć zdalny notmaster?


Nieco większa jasność, z solution from Ionut:

Zwykła metoda nie powiodło się dla mnie:

$ git push origin :notmaster 
error: dst refspec notmaster matches more than one. 

To dlatego, że miałem tag z taką samą nazwą jak oddział. To był zły wybór w moim imieniu i spowodował dwuznaczność. Więc w tym przypadku:

$ git push origin :refs/heads/notmaster 
+2

Kocham cię! Od wielu lat próbuję rozwiązać ten sam problem! Właśnie dlatego uwielbiam StackOverflow +1 !!! – Logan

Odpowiedz

50

git push origin :notmaster, co w zasadzie oznacza "naciskać nic do notmaster remote".

+1

error: dst refspec Notmaster pasuje do więcej niż jednego. – chrisaycock

+0

To jest pierwsze. Nie widziałem wcześniej tego błędu. –

+2

Ach, twoja druga sugestia zadziałała! Mam tag z tą samą etykietą co ta gałąź (notmaster). Czy to może spowodować błąd? – chrisaycock

0

Usuń lokalnego oddziału:

git branch -d {branch name} //All changes must be committed first. 
git branch -D {branch name} //Does not require commit. 

Usuń Gitorious Branża:

Delete the local branch first. 
git push {gitorious push url} :{branch name} 
+2

Drugą z twoich odpowiedzi jest to, czego szukał OP, choć nie jest to w żaden szczególny sposób gadatliwy i nie potrzebujesz adresu URL - tylko nazwa zdalna, którą OP dał. 'git push origin: notmaster', lub w tym przypadku' git push origin: refs/heads/notmaster' będzie bardziej klarowną odpowiedzią. – Cascabel

12
git push origin --delete notmaster 

Jeśli używasz Git 1.7.0 lub później, będzie to rade . Przed Git 1.7.0, trzeba było użyć mniej intuicyjne (ale równie skuteczne) składnię:

git push origin :notmaster 

Starsze składnia nadal działa w nowszych wersjach Git, ale nowsze składnia wydaje się bardziej humanitarny i łatwiejsze do zapamiętania . Jeśli chcę, aby usunąć gałąź, wpisanie --delete wydaje się być rzeczą naturalną.

Z 1.7.0 release notes:

"git push" learned "git push origin --delete branch", a syntactic sugar for "git push origin :branch".

3

Stało się to dlatego, że nazwa oddziału i tag jest taka sama.

Aby usunąć gałąź ze zdalnego wykorzystania

git push origin :refs/heads/branchname

Aby usunąć tag ze zdalnego wykorzystania

git push origin :refs/tags/tagname

Aby usunąć z lokalnym można użyć następujących.

git branch -d branchname

git tag -d tagname

39

miałem ten sam problem. Miałem zarówno gałąź, jak i znacznik o nazwie 3.2. Dlatego to mówi, że jest więcej niż jeden mecz:

git error: dst refspec 3.2 matches more than one. 

Oto jak usunąć oddziału:

git push origin :heads/3.2 

A oto jak usunąć tag:

git push origin :tags/3.2 
+0

To jest trudne, dokładnie mój problem! –

+0

Smart! To działa! – xtofl

0

następujące kroki może również załatwić sprawę:

$ git fetch --prune --tags 
$ git push origin :refs/tags/{same-branch-tag-name} 
$ git push origin :{same-branch-tag-name} 
$ git push --tags