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ę.


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,

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.


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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.