Git 로컬 이름과 원격 지점 이름을 어떻게 바꾸나요?


458

master-> origin / regacy, FeatureA-> origin / FeatureA와 같은 네 가지 분기가 있습니다. 보시다시피, 잘못된 이름을 입력했습니다.

그래서 원격 지점 이름의 이름을 바꾸고 싶습니다 (원산지 / 레거시 → 출발지 / 레거시 또는 출발지 / 마스터)

아래 명령을 시도하십시오.

git remote rename regacy legacy

그러나 Git 콘솔은 나에게 오류 메시지를 반환했습니다.

 error : Could not rename config section 'remote.regacy' to 'remote.legacy'

이 문제를 어떻게 해결할 수 있습니까?




답변:


811

여기에 이미지 설명을 입력하십시오


이를 달성하는 몇 가지 방법이 있습니다.

  1. 지역 지점을 변경 한 다음 변경 사항을 적용하십시오
  2. 원래 이름을 로컬로 유지하면서 지점을 새 이름으로 원격으로 푸시

로컬 및 원격 이름 바꾸기

# 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>

# 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>

여기에 이미지 설명을 입력하십시오


원격 지사 만 이름 바꾸기

크레딧 : 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>

중요 사항:

git branch -m(이동) 을 사용하면 Git은 추적 지점을 새로운 이름으로 업데이트 합니다.

git remote rename legacy legacy

git remote rename구성 파일에서 원격 섹션을 업데이트하려고합니다. 주어진 이름으로 리모컨의 이름을 새 이름으로 바꾸지 만, 찾지 못한 경우 이름을 바꾸지 못했습니다.

그러나 그것은 당신이 생각하는 것을하지 않을 것입니다. 원격 분기가 아닌 로컬 구성 원격 이름의 이름 을 바꿉니다 . 


참고 Git 서버를 사용하면 웹 인터페이스 또는 외부 프로그램 (예 : Sourcetree 등)을 사용하여 Git 브랜치의 이름을 바꿀 수 있지만 Git에서는 모든 작업이 로컬에서 수행되므로 위 명령을 사용하는 것이 좋습니다. 일에.


위의 작업을 수행 한 후에도 계속 무언가를해야하는데 메시지가 나타납니다.Your configuration specifies to merge with the ref ''refs/heads/old_name'
Krzysztof Krasoń

6
이전 업스트림을 설정 해제하는 것을 잊지 git checkout <new_name> ; git branch --unset-upstream
Miguel Ping

2
@MiguelPing의 의견이 중요합니다. 지점의 이름을 바꾸려고 할 때 이미 github으로 푸시하고 로컬 이름을 삭제하고 이름을 바꾸고 다시 푸시하면 이전 이름이 다시 사용됩니다. 내가하면 --unset-upstream전에 다시 밀어 의도 한대로, 그것을 작동합니다.
Adam Tuttle

1
리모콘의 이전 지점에서 열린 PR이 자동으로 닫히는 것을 피할 수있는 방법이 있습니까? 이전 분기 이름의 PR이 원점으로 밀린 후 닫히는 gitlab 에서이 문제에 직면했습니다.
Himanshu Tanwar

142

지점의 이름을 잘못 지정하고이를 원격 저장소로 푸시 한 경우 다음 단계에 따라 해당 지점의 이름을 바꾸십시오 ( 이 기사에 따라 ).

  1. 현지 지점의 이름을 바꾸십시오.

    • 지점에 있다면 이름을 바꾸십시오.
      git branch -m new-name

    • 다른 지점에있는 경우 :
      git branch -m old-name new-name

  2. old-name원격 브랜치를 삭제하고 new-name로컬 브랜치를 푸시하십시오 .
    git push origin :old-name new-name

  3. 상류 새로운 이름 지역 지점에 대한 지점 재설정 :
    다음 분기 및 전환을 :
    git push origin -u new-name


1
처음 2 단계 후에 현재 지점에 대한 오류 메시지가 원격 저장소의 존재하지 않는 지점을 가리키는 경우 3 단계에서이를 해결합니다.
Kevin Hooke

1
@ Dr1Ku git push <remote> --delete old_name& git push origin :old-name new-name를 삭제하려면 & 의 차이점을 알아야합니다 .
Ashutosh Chamoli

BitBucket 사용자 : 이름을 바꾸면 2 단계에서 오류를 수정 master하고 Repo Details에서 기본 분기를 새 분기로 설정하십시오. 오류 :By default, deleting the current branch is denied, because the next 'git clone' won't result in any file checked out, causing confusion. You can set 'receive.denyDeleteCurrent' configuration variable to 'warn' or 'ignore' in the remote repository to allow deleting the current branch, with or without a warning message. To squelch this message, you can set it to 'refuse'. error: refusing to delete the current branch: refs/heads/master
Colin

다른 사람의 사이에서 가장 쉬운
압둘라 Nilam

37

직접적인 방법이있는 것 같습니다.

로컬 지점의 이름을 바꾸지 않고 원격으로 지점의 이름을 바꾸려면 다음과 같은 단일 명령 으로이 작업을 수행 할 수 있습니다

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

Git에서 원격으로 브랜치 이름 바꾸기

자세한 내용은 원래 답변을 참조하십시오.


1
자식에서 작동하지 않습니다 2.20.1이전 분기를 삭제했지만 새 분기가 생성되지 않았습니다.
Paul Razvan Berg

26

다음과 같은 방법으로도 수행 할 수 있습니다.

먼저 로컬 지점의 이름을 바꾼 다음 원격 지점의 이름을 바꿉니다.

현지 지사 이름 바꾸기 :

다른 지점에 로그인 한 경우

git branch -m old_branch new_branch 

같은 지점에 로그인 한 경우

git branch -m new_branch

원격 지사 이름 바꾸기 :

git push origin :old_branch    // Delete the remote branch

git push --set-upstream origin new_branch   // Create a new remote branch

5

이미 잘못된 이름을 원격으로 푸시 한 경우 다음을 수행하십시오.

  1. 이름을 바꾸려는 로컬 지점으로 전환

    git checkout <old_name>

  2. 로컬 지점 이름 바꾸기

    git branch -m <new_name>

  3. <new_name>로컬 브랜치를 푸시하고 업스트림 브랜치를 재설정

    git push origin -u <new_name>

  4. <old_name>원격 지사 삭제

    git push origin --delete <old_name>

이것은 이 기사를 기반으로 했다 .


4

현재 지점의 이름을 변경하기위한 간단한 코드 조각 첨부 (로컬 및 원점) :

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

자식 문서의 설명 :

자식 분기 -m 또는 -M 옵션은로 이름이 변경됩니다. 해당 reflog가 있으면 일치하도록 이름이 바뀌고 분기 이름 변경을 기억하기 위해 reflog 항목이 작성됩니다. 존재하는 경우 -M을 사용하여 이름 변경을 강제 실행해야합니다.

특별한 참조 사양 : (또는 + : 빨리 감기가 아닌 업데이트를 허용하기 위해) Git은 "일치하는"분기를 푸시하도록 지시합니다. 로컬 측에 존재하는 모든 분기에 대해 동일한 이름의 분기가 이미 존재하면 원격 측이 업데이트됩니다 원격쪽에.

--set-upstream 의 추적 정보를 설정하므로 업스트림 분기로 간주됩니다. no를 지정하면 기본적으로 현재 분기로 설정됩니다.


3

직접적인 방법은 없습니다

  1. 로컬 지점 이름 바꾸기 ,

    내 현재 지점은 마스터입니다

    git branch -m master_renamed #master_renamed는 새로운 마스터 이름입니다.

  2. 원격 지사 삭제

    git push origin --delete master #origin은 remote_name입니다

  3. 이름이 바뀐 지점을 원격으로 푸시

    git push origin master_renamed

그게 다야 ...


좋고 간단하며 단 3 단계. 내가 제안 할 수있는 개선점 git push -u origin master_renamed은 지점을 추적 지점으로 설정하는 것입니다.
ut9081

2

로컬 브랜치의 이름을 바꾸지 않고도 다음 세 가지 간단한 단계를 수행 할 수 있습니다.

  1. GitHub의 저장소로 이동
  2. 이름을 바꾸려는 이전 지점에서 새 지점을 만듭니다.
  3. 기존 지점 삭제

0

나는이 자식 별칭을 사용하고 거의 자동으로 작업을 수행합니다.

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;'

사용법 : git move FROM_BRANCH TO_BRANCH

master, origin 등과 같은 기본 이름이 있으면 작동합니다. 원하는대로 수정할 수 있지만 아이디어를 제공합니다.


0

로컬 및 원격 지점의 이름을 바꾸려면 다음 작업을 수행해야했습니다.

# 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>

기존 답변과 어떻게 다릅니 까?
Himanshu Tanwar

0
  1. 현지 지점의 이름을 바꿉니다. 지점에 있다면 이름을 바꾸십시오.

    자식 분기 -m 새 이름

다른 지점에있는 경우 :

git branch -m old-name new-name
  1. 이전 이름의 원격 분기를 삭제하고 새 이름의 로컬 분기를 누릅니다.

    자식 푸시 원산지 : old-name new-name

  2. 새 이름 로컬 브랜치의 업스트림 브랜치를 재설정하십시오. 지점으로 전환 한 후 :

    git push origin -u 새로운 이름

모든 설정!


0
  • 현지 지점의 이름을 바꿉니다 .

지점에 있다면 이름을 바꾸십시오.

git branch -m new-name

현재 시간에 다른 지점에 머무르는 경우 :

git branch -m old-name new-name
  • 이전 이름의 원격 분기를 삭제하고 새 이름의 로컬 분기를 누릅니다.

목표 지점에 머무르고 다음을 수행하십시오.

git push origin :old-name new-name
  • 새 이름 로컬 브랜치의 업스트림 브랜치를 재설정하십시오.

대상 분기로 전환 한 후 다음을 수행하십시오.

git push origin -u new-name
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.