2011-08-16 13 views
35

Mam 2 gałęzie git: master i experimental.Zmiana nazwy odległego oddziału git

Eksperymentalny stał się dobry, chcę sprawić, że będzie on mistrzem. Pomyślałem, chciałbym zmienić nazwę shuffle rzeczy wokół, ale tutaj jest to, co mam:

nutebook:Stuff nathan$ git remote rename master old 
error: Could not rename config section 'remote.master' to 'remote.old' 

używam GitHub i git-Tower.

Odpowiedz

56

Poniżej znajduje się instrukcja zmiany nazwy głównego oddziału. Będzie to równie łatwe do zmiany nazwy oddziału eksperymentalnego.

Oto jak dokonałem zmiany nazwy.

Najpierw, w drzewie roboczym, lokalnie zmień nazwę master na coś innego niż .

git branch -m master old-dev 

Zmiana nazwy oddziału działa, gdy jesteś w branży, więc nie ma potrzeby do kasy coś innego.

Następnie lokalnie zmienić nazwę oddziału konserwacji (2,63-branch) do mistrza:

git branch -m 2.63-branch master 

Teraz czas na bałagan z pilota. Na wypadek, gdybyś się zepsuł, możesz chcieć upewnić się, że masz aktualną kopię zapasową. Po pierwsze, usunąć pana pilota:

git push origin :master 

i teraz dać zdalny nowy Master:

git push origin master:refs/heads/master 

Aktualizacja: Podczas tworzenia nowej gałęzi, bibl/głowice/prefiks jest potrzebne na odległa strona. Jeśli oddział już istnieje (jako master podjął powyżej), nazwa oddziału jest wymagana tylko po stronie zdalnej.

... a teraz przemianowany-stary mistrz:

git push origin old-dev:refs/heads/old-dev 

Wreszcie, należy usunąć starą nazwę swojego oddziału technicznego, aby zapobiec zamieszania

git push origin :2.63-branch 

Klienci będą teraz Znajdź " nowa gałąź "master", gdy się ciągną.

patrz strona this.

+7

Aby dodać do tego: kiedy chciałem zmienić nazwę mojego "master" na github, najpierw musiałem zmienić domyślną gałąź w "settings", zanim pozwolił mi ją usunąć (tj. 'Git push origin: master'). –

+0

Czy możesz po prostu zmienić nazwę oddziału na lokalnie i przesunąć go na zdalny, a następnie usunąć stary? –

+1

Uważam, że flaga -u do wypychania jest dobra, ponieważ ustawia dla ciebie śledzenie w górę strumienia nowego zdalnego, np. 'git push -u origin master' (używając git 1.7 nie potrzebowałem pełnego prefiksu refs/heads) –

1

master to gałąź, a nie zdalny taki jak origin. jeśli chcesz mieć swoją pracę eksperymentalną do głównego oddziału, wystarczy połączyć go:

git checkout master 
git merge experimental 
0

Co próbowałeś zrobić, to zmienić nazwę zdalnego repo z „master” do „starych”. Aby zmienić nazwę oddziału na innym repo, po prostu usuń go za pomocą

git push <remote> :<branch name> 
, a następnie naciśnij go jako coś innego.

4

Myślę, że najprostszym sposobem jest wykupienie gałęzi eksperymentalnej, usunięcie zdalnej gałęzi głównej, a następnie wypchnięcie lokalnego eksperymentalnego jako nowego zdalnego wzorca master.

// delete the remote master branch by pushing null 
// (the space in front of the semicolon) in this branch 
git push origin :master 
// push local experimental to remote master 
git push origin experimental:master