Zmień nazwę oddziału w repozytorium Git

294

Jak zmienić nazwę istniejącego oddziału w repozytorium Git?

Chcę, aby bieżący oddział miał nową nazwę.

Alex
źródło
2
zaakceptuj odpowiedź @Alex lub powiedz, dlaczego nie chcesz jej zaakceptować.
Charlie Parker
1
@CharlieParker Prawdopodobnie ma to coś wspólnego z faktem, że było to jedyne pytanie Alexa i prawdopodobnie nie zalogował się od czasu: „Ostatni raz 3 lutego 11 21:29”
żółty święty
13
@JB OMG, mówisz, że coś mu się mogło stać ??? !!!!!!!!!
abbood
1
Czy można zaakceptować wysoko głosowaną odpowiedź na to pytanie?
Steve Chambers,
Możliwy duplikat Jak zmienić nazwę lokalnego oddziału Git?
Vineet Jain

Odpowiedzi:

465

Zakładając, że jesteś obecnie w oddziale, którego nazwę chcesz zmienić:

git branch -m newname

Jest to udokumentowane w instrukcji, dla git-branchktórej można przeglądać za pomocą

man git-branch

lub

git help branch

W szczególności polecenie to

git branch (-m | -M) [<oldbranch>] <newbranch>

gdzie parametry to:

   <oldbranch>
       The name of an existing branch to rename.

   <newbranch>
       The new name for an existing branch. The same restrictions as for <branchname> apply.

<oldbranch> jest opcjonalny, jeśli chcesz zmienić nazwę bieżącej gałęzi.

Richard Fearn
źródło
10
A git branch -m other-branch renamed-other-branchjeśli nie jesteś.
mipadi
32
Ponadto, jeśli wypchnąłeś stary oddział do pilota, możesz go usunąć za pomocą git push origin :branchname. Umożliwiłoby to wypchnięcie nowego i usunięcie starego, zasadniczo zmieniając jego nazwę na pilocie.
Jonathan
1
@mipadi, tworzy nowy oddział i nie usuwa poprzedniego.
Mohammad Arif
git branch (-m | -M) [<oldbranch>] <newbranch> Nie działało dla mnie, powodując błąd składniowy.
Mohammad Arif
@MohammedArif Z -m, to zmienia nazwę starego oddziału, więc nie usunąć poprzednie.
Richard Fearn,
176

Jeśli jesteś obecnie w oddziale, którego nazwę chcesz zmienić:

git branch -m new_name 

Albo:

git branch -m old_name new_name 

Możesz to sprawdzić za pomocą:

git branch -a

Jak widać, zmieniła się tylko nazwa lokalna Teraz, aby zmienić nazwę również na pilocie, musisz:

git push origin :old_name

Spowoduje to usunięcie gałęzi, a następnie przesłanie jej pod nową nazwą:

git push origin new_name

Źródło: https://web.archive.org/web/20150929104013/http://blog.changecong.com:80/2012/10/rename-a-remote-branch-on-github

javierdvalle
źródło
13
Myślę, że to poprawna odpowiedź, wysoko głosowana odpowiedź Richarda Feama dotyczy tylko lokalnego repozytorium, w tym zdalnego.
user1145404
4
Zgadzając się z powyższym komentarzem, ta odpowiedź była w moim przypadku bardziej kompletna. Ponadto, kiedy po wykonaniu wszystkich kroków wymienionych w tej odpowiedzi wypchnąłem dodatkowe zatwierdzenia do zdalnej gałęzi, git ponownie próbował wypchnąć do old_namegałęzi. Na szczęście git dostarczane również poprawkę w wierszu poleceń: git-branch --unset-upstream. Następnie wszystkie wypychane zatwierdzenia trafiły do new_namezdalnego oddziału.
Hans Roerdinkholder
2
strzeżcie się, że w ten sposób straciliście zdolność naciskania, git pushponieważ łagodnie ostrzegacie, co mówi Your branch is based on 'old_name, but the upstream is gone.A git push -u origin new_namerozwiązać.
netalex