Właśnie zmieniłem nazwę mojego lokalnego oddziału, używając
git branch -m oldname newname
ale zmienia to tylko lokalną wersję oddziału. Jak mogę zmienić nazwę na GitHub?
Właśnie zmieniłem nazwę mojego lokalnego oddziału, używając
git branch -m oldname newname
ale zmienia to tylko lokalną wersję oddziału. Jak mogę zmienić nazwę na GitHub?
Odpowiedzi:
Jak wspomniano, usuń stary na Github i ponownie wypchnij, chociaż użyte polecenia są bardziej szczegółowe niż to konieczne:
git push origin :name_of_the_old_branch_on_github
git push origin new_name_of_the_branch_that_is_local
Prosty. Rozróżniając nieco polecenia, polecenie git push jest zasadniczo:
git push <remote> <local_branch>:<remote_branch>
A zatem robienie wypychania bez podanego adresu local_branch oznacza w zasadzie „nie pobieraj niczego z mojego lokalnego repozytorium i uczyń go zdalną gałęzią”. Zawsze uważałem, że jest to całkowicie nieprzyzwoite, ale tak właśnie się dzieje.
Edycja: Począwszy od Git 1.7 istnieje alternatywna składnia do usuwania zdalnej gałęzi:
git push origin --delete name_of_the_remote_branch
Edycja: Jak wspomniano w komentarzach @ void.pointer
Pamiętaj, że możesz połączyć 2 operacje wypychania:
git push origin :old_branch new_branch
Spowoduje to zarówno usunięcie starej gałęzi, jak i wypchnięcie nowej.
Można to zmienić w prosty alias, który przyjmuje jako argument zdalną, oryginalną gałąź i nową gałąź w ~/.gitconfig
:
[alias]
branchm = "!git branch -m $2 $3 && git push $1 :$2 $3 -u #"
Stosowanie:
git branchm origin old_branch new_branch
Zauważ, że argumenty pozycyjne w poleceniach powłoki były problematyczne w starszych (wcześniejszych niż 2.8?) Wersjach git, więc alias może się różnić w zależności od wersji git. Zobacz tę dyskusję, aby uzyskać szczegółowe informacje.
git push origin :old_branch new_branch
. Spowoduje to zarówno usunięcie starej gałęzi, jak i wypchnięcie nowej.
git branch -m new_branch
(zmień nazwę old_branch na new_branch) 2. git commit -m 'msg'
, 3. git push
4. Mhmm, old_branch pojawia się w Github, pytanie Google, a ja jestem poproszony o odpowiedź 5. git push origin :old_branch
(mówi, że została usunięta) 6. git push origin new_branch
... wypełnia, a następnie mówi * [new branch] new_branch -> old_branch
. Wróć do Github i old_branch
pojawi się ponownie. Jeśli usunę w internetowym interfejsie Github, mam opcję „Przywróć”, więc wygląda na to, że naciśnięcie nowej_gałęzi po prostu przywraca.
Dla mnie działały następujące polecenia:
git push origin :old-name-of-branch-on-github
git branch -m old-name-of-branch-on-github new-name-for-branch-you-want
git push origin new-name-for-branch-you-want
Znalazłem 3 polecenia, jak możesz zmienić nazwę gałęzi git, i te polecenia są szybszym sposobem na to
git branch -m old_branch new_branch # Rename branch locally
git push origin :old_branch # Delete the old branch
git push --set-upstream origin new_branch # Push the new branch, set local branch to track the new remote
Jeśli potrzebujesz krok po kroku, możesz przeczytać ten świetny artykuł
git push --set-upstream
jest najważniejszą częścią, jeśli zdarzy ci się zmienić nazwę oddziału lokalnie za pomocą aplikacji github przed usunięciem oddziału zdalnego.
Po prostu usuń starą gałąź i utwórz nową.
Przykład (wyłącznie zmiana nazwy oddziału zdalnego):
git push origin :refs/heads/oldname
git push origin newname:refs/heads/newname
Prawdopodobnie powinieneś również zmienić nazwę lokalnego oddziału i zmienić ustawienia dotyczące tego, gdzie należy pchać / wyciągać.
git push origin newname:refs/heads/newname
? master i newname nie mogą wskazywać na to samo zatwierdzenie.
1. Zmień nazwę swojego lokalnego oddziału.
Jeśli jesteś w oddziale, którego nazwę chcesz zmienić:
git branch -m new-name
Jeśli jesteś w innym oddziale:
git branch -m old-name new-name
2. Usuń gałąź zdalną o starej nazwie i wciśnij gałąź lokalną o nowej nazwie.
git push origin :old-name new-name
3. Zresetuj gałąź nadrzędną dla gałęzi lokalnej o nowej nazwie.
Przejdź do oddziału, a następnie:
git push origin -u new-name
Wniosek jest taki
git branch -m new-name
git push origin :old-name new-name
git push origin -u new-name
git branch -m new-name && git push origin :master new-name
. To zawiedzie. Jeśli ta odpowiedź dotyczy tylko git, a nie github, to pytanie jest duplikatem kilku innych pytań i powinno zostać zamknięte. Jeśli tak naprawdę chodzi o github, odpowiedź musi obejmować github. Ta odpowiedź nie.
Możesz to zrobić bez terminala, wystarczy utworzyć gałąź o nowej nazwie i usunąć starą po. Możesz użyć tego postu, aby to zrobić.
W tym artykule pokazano, jak to zrobić naprawdę łatwo.
1. Aby zmienić nazwę lokalnego oddziału Git, możemy użyć polecenia Git branch -m w celu zmodyfikowania nazwy:
git branch -m feature1 feature2
2. Jeśli szukasz polecenia zmiany nazwy zdalnego oddziału Git, to jest to: „
git push -u origin feature2:feature3
Sprawdź, czy nie masz tagi na gałęzi, zanim to zrobisz. Możesz to zrobić za pomocą git tag
.
Innym sposobem jest zmiana nazwy następujących plików :
.git/refs/head/[branch-name]
na.git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/[branch-name]
na.git/refs/remotes/[all-remote-names]/new-branch-name
Zmień nazwę głowy i pilotów na komputerze lokalnym i na źródłach / zdalnych serwerach
Jeśli twoja obecna nazwa gałęzi zawiera ukośniki ( /
), git utworzy katalogi w następujący sposób:
obecna nazwa oddziału: "awe/some/branch"
.git/refs/head/awe/some/branch
.git/refs/remotes/[all-remote-names]/awe/some/branch
życzę nazwa oddziału: "new-branch-name"
branch
plik z.git/refs/*/awe/some/
.git/refs/head/
.branch
plik ze wszystkich.git/refs/remotes/*/awe/some/
.git/refs/remotes/*/
.branch
plików na new-branch-name
..git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/new-branch-name
awe/some/branch
na new-branch-name
(lokalna i zdalna!)Informacje: Ten sposób może nie być najlepszy, ale nadal działa dla osób, które mogą mieć problemy z innymi sposobami
W moim przypadku potrzebowałem dodatkowego polecenia,
aby moja gałąź o zmienionej nazwie przyspieszyła
git branch --unset-upstream
origin newname
.
(Dla ułatwienia pisania), najpierw git checkout oldname
.
Następnie uruchom następujące czynności:
git branch -m newname
git push origin :oldname
lub lubgit push origin --delete oldname
git branch --unset-upstream
git push -u origin newname
git push origin newname
Ten dodatkowy krok może być konieczny tylko dlatego, że (zazwyczaj) konfiguruję zdalne śledzenie w moich oddziałach za pośrednictwem . W ten sposób, kiedy się wymelduję, potrzebuję tylko typu zamiastgit push
-u
origin oldname
oldname
git push
git push origin oldname
Jeśli ja nie użyć polecenia git branch --unset-upstream
przed git push origin newbranch
git ponownie tworzy oldbranch
i popycha newbranch
do origin oldbranch
- moim zamiarem pokonania.
Następujące polecenia zmieniają nazwę gałęzi lokalnie, usuwają starą gałąź w lokalizacji zdalnej i pchają nową gałąź, ustawiając gałąź lokalną do śledzenia nowego pilota:
git branch -m old_branch new_branch
git push origin :old_branch
git push --set-upstream origin new_branch
To takie proste . Aby zmienić nazwę gałęzi git lokalnie i zdalnie, użyj tego fragmentu kodu (przetestowanego i działa jak urok):
git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>
Wyjaśnienie:
Zmień nazwę kroku:
Git Reference: Z opcją -m lub -M zostanie zmieniona nazwa na. Jeśli miał odpowiedni dziennik rejestrowania, jego nazwa jest dopasowywana, a pozycja dziennika rejestrowania jest tworzona w celu zapamiętania zmiany nazwy oddziału. Jeśli istnieje, należy użyć opcji -M, aby wymusić zmianę nazwy.
Usuń krok:
Referencje Git: git push origin: eksperymentalna Znajdź referencję pasującą do eksperymentalnej w repozytorium źródłowym (np. Referencje / głowice / eksperymentalne) i usuń ją.
Aktualizacja na etapie zdalnego repozytorium (odniesienie do śledzenia w celu śledzenia):
Odwołanie do git : --set-upstream Dla każdej gałęzi, która jest aktualna lub pomyślnie wypchnięta, dodaj odwołanie upstream (śledzące), używane przez bez argumentów git-pull [1] i inne polecenia. Aby uzyskać więcej informacji, zobacz branch..merge w git-config [1].
git push head origin
git gałąź -m stara-nazwa-gałęzi nowa-nazwa-gałęzi
git push head origin
Na gałęzi git uruchom git gałąź -m stara_nazwa nowa_nazwa To zmodyfikuje nazwę gałęzi na lokalnym repozytorium git push origin: stara_nazwa nowa_nazwa Spowoduje to wypchnięcie zmodyfikowanej nazwy do zdalnego i usunie starą gałąź git push origin -u nowa_nazwa Ustawia lokalną gałąź do śledzenia oddział zdalny. To rozwiązuje problem