Jak zmienić nazwę lokalnej i zdalnej gałęzi Git?

Mam cztery gałęzie: master - > origin / regacy, FeatureA - > origin/FeatureA. Jak widzisz, wpisałem złe imię.

Dlatego chcę zmienić nazwę zdalnej gałęzi (origin / regacy → origin / legacy lub origin / master)

Próbuję wykonać poniższe polecenie:

git remote rename regacy legacy

Ale konsola Git zwróciła mi komunikat o błędzie.

 error : Could not rename config section 'remote.regacy' to 'remote.legacy'
Jak mogę rozwiązać ten problem?
Author: Peter Mortensen, 2015-06-02

12 answers

schematyczny, ładny Git Remote graph


Jest kilka sposobów, aby to osiągnąć:

  1. Zmień lokalną gałąź, a następnie wypchnij zmiany
  2. Przesuń gałąź do zdalnego z nową nazwą, zachowując oryginalną nazwę lokalnie

Zmiana nazw lokalnych i zdalnych

# Rename the local branch to the new name
git branch -m <old_name> <new_name>

# Delete the old branch on remote - where <remote> is, for example, origin
git push <remote> --delete <old_name>

# Or shorter way to delete remote branch [:]
git push <remote> :<old_name>

# Prevent git from using the old name when pushing in the next step.
# Otherwise, git will use the old upstream name instead of <new_name>.
git branch --unset-upstream <old_name>

# Push the new branch to remote
git push <remote> <new_name>

# Reset the upstream branch for the new_name local branch
git push <remote> -u <new_name>

zrzut ekranu konsoli


Zmiana nazwy tylko zdalnej gałęzi

Kredyt: ptim

# In this option, we will push the branch to the remote with the new name
# While keeping the local name as is
git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>

Ważna uwaga:

Kiedy używasz git branch -m (move), Git jest również Aktualizacja Twojej gałęzi śledzenia o nową nazwę.

git remote rename legacy legacy

git remote rename próbuje zaktualizować sekcję zdalną w pliku konfiguracyjnym. Zmieni nazwę pilota z podaną nazwą na nową nazwę, ale w Twoim przypadku nie znalazł żadnej, więc zmiana nazwy nie powiodła się.

Ale nie zrobi tego, co myślisz; zmieni nazwę Twojego lokalnego nazwy zdalnej Konfiguracji i Nie zdalnego branch. 


Uwaga Serwery Git mogą pozwolić na zmianę nazw gałęzi Git za pomocą interfejsu WWW lub zewnętrznych programów (takich jak Sourcetree, itp.), ale musisz pamiętać, że w Git cała praca jest wykonywana lokalnie, więc zalecane jest użycie powyższych poleceń do pracy.

 1086
Author: CodeWizard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-12-08 03:43:48

Jeśli nazwałeś gałąź nieprawidłowo i przesunąłeś ją do zdalnego repozytorium, wykonaj następujące kroki, aby zmienić jej nazwę ( na podstawie tego artykułu):

  1. Zmień nazwę lokalnego oddziału:

    • Jeśli znajdujesz się w gałęzi, którą chcesz zmienić nazwę:
      git branch -m new-name

    • Jeśli jesteś na innej gałęzi:
      git branch -m old-name new-name

  2. Usuń zdalną gałąź old-name i wciśnij new-name lokalny oddział:
    git push origin :old-name new-name

  3. Zresetuj gałąź upstream dla lokalnej gałęzi o nowej nazwie :
    Przełączyć się na gałąź, a następnie:
    git push origin -u new-name

 217
Author: ZILONG PAN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-09 08:58:23

Wydaje się, że istnieje bezpośredni sposób:

Jeśli naprawdę chcesz zdalnie zmienić nazwę gałęzi (bez zmiany nazwy lokalnych gałęzi w tym samym czasie), możesz to zrobić za pomocą jednego polecenia, takiego jak

git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>

zdalna zmiana nazwy gałęzi w Git

Zobacz oryginalną odpowiedź, aby uzyskać więcej szczegółów.

 43
Author: ptim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-23 11:31:43

Można to również zrobić w następujący sposób.

najpierw zmień nazwę lokalnej gałęzi, a następnie zdalnej gałęzi.

Zmiana nazwy oddziału lokalnego:

Jeśli zalogowany w innym oddziale,

git branch -m old_branch new_branch 

Jeśli zalogowany w tym samym oddziale,

git branch -m new_branch

Zmiana nazwy zdalnej gałęzi:

git push origin :old_branch    // Delete the remote branch

git push --set-upstream origin new_branch   // Create a new remote branch
 32
Author: Atequer Rahman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-23 11:36:24
  • Zmień nazwę lokalnego oddziału .

Jeśli jesteś na gałęzi chcesz zmienić nazwę:

git branch -m new-name

Jeśli pozostaniesz na innym oddziale w bieżącym czasie:

git branch -m old-name new-name
  • Usuń zdalną gałąź o starej nazwie i wypchnij lokalną gałąź o nowej nazwie.

Pozostań na gałęzi docelowej i:

git push origin :old-name new-name
  • Zresetuj gałąź upstream dla lokalnej gałęzi o nowej nazwie.

Przełączyć się na gałąź docelową i następnie:

git push origin -u new-name
 18
Author: Vitaliy Andrusishyn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-04 15:14:16

Jeśli już nacisnąłeś złą nazwę na remote, wykonaj następujące czynności:

  1. Przełącz do lokalnego oddziału, którego nazwę chcesz zmienić

    git checkout <old_name>

  2. Zmień nazwę lokalnego oddziału

    git branch -m <new_name>

  3. Naciśnij <new_name> lokalną gałąź i zresetuj gałąź upstream

    git push origin -u <new_name>

  4. Usuń <old_name> zdalny oddział

    git push origin --delete <old_name>

Opracowano na podstawie tego artykułu .

 9
Author: milesmeow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-24 18:22:04

Dołączenie prostego fragmentu do zmiany nazwy bieżącej gałęzi (lokalnej i na origin):

git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>

Wyjaśnienie z git docs:

Git branch-m lub opcja-M, zostanie zmieniona na . Jeśli ma odpowiedni reflog, zmienia nazwę dopasować, a wpis reflog jest tworzony w celu zapamiętania zmiana nazwy oddziału. Jeśli istnieje,- M musi być użyte, aby wymusić Zmień nazwę na happen.

Specjalny refspec: (lub +: aby umożliwić aktualizacje bez przewijania do przodu) kieruje Git do "pasujących" gałęzi: dla każdej gałęzi, która istnieje po stronie lokalnej, strona zdalna jest aktualizowana, jeśli gałąź tego samego nazwa już istnieje po stronie zdalnej.

--set-upstream Skonfiguruj informacje o śledzeniu, więc jest uważany za gałąź upstream. Jeżeli nie jest podane, wtedy domyślnie jest to branch.

 8
Author: avivamg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-19 14:31:21

Nie ma metody bezpośredniej,

  1. Zmień Nazwę Lokalnego Oddziału ,

    Moja obecna gałąź to master

    git branch -m master_renamed #master_renamed to nowa nazwa master

  2. Delete Remote branch,

    git push origin --delete master #origin is remote_name

  3. Wciśnij gałąź do zdalnego,

    git push origin master_renamed

To wszystko...
 3
Author: Mohideen bin Mohammed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-23 11:35:23

Można to zrobić nawet bez zmiany nazwy lokalnej gałęzi w trzech prostych krokach:

  1. Przejdź do swojego repozytorium w GitHub
  2. Utwórz nową gałąź ze starej gałęzi, którą chcesz zmienić nazwę
  3. Usuń starą gałąź
 2
Author: Code_Mode,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-23 11:37:17

Używam tych aliasów git i w zasadzie działa automatycznie:

git config --global alias.move '!git checkout master; git branch -m $1 $2; git status; git push --delete origin $1; git status; git push -u origin $2; git branch -a; exit;'

Użycie: git move FROM_BRANCH to_branch

To działa, jeśli masz domyślne nazwy, takie jak master, origin itp. Możesz modyfikować, jak chcesz, ale to daje pomysł.

 1
Author: Tarik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-24 09:56:22

Musiałem wykonać następujące zadanie, aby zmienić nazwę lokalnej i zdalnej gałęzi:

# Rename the local branch to the new name
git branch -m <old_name> <new_name>

#  Delete the old remote branch
git push origin --delete <old_name>

# push to new remote branch - creates new remote branch
git push origin <new_name>

# set new remote branch as default remote branch for local branch
git branch --set-upstream-to=origin/<new_name> <new_name>
 0
Author: Sebastian Viereck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-19 10:13:22
  1. Zmień nazwę lokalnego oddziału. Jeśli znajdujesz się na gałęzi, którą chcesz zmienić nazwę:

    Git branch-m new-name

Jeśli jesteś na innej gałęzi:

git branch -m old-name new-name
  1. Usuń zdalną gałąź o starej nazwie i wypchnij lokalną gałąź o nowej nazwie.

    Git push origin :old-name new-name

  2. Resetuje gałąź upstream dla lokalnej gałęzi o nowej nazwie. Switch to the branch and then:

    Git push origin-u new-name

Wszystko gotowe!
 0
Author: Anupam Maurya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-12 07:36:49