로컬 Git 브랜치의 이름을 바꾸려면 어떻게합니까?


8571

로컬 및 원격 Git 리포지토리 모두의 마스터 브랜치 이름 바꾸기에 설명 된대로 원격 브랜치의 이름을 바꾸고 싶지 않습니다 .

원격 지점으로 푸시되지 않은 로컬 지점의 이름을 바꾸려면 어떻게해야합니까?

원격 지점의 이름을 바꿔야 할 경우 :
Git 로컬 및 원격 지점 이름을 모두 바꾸려면 어떻게합니까

답변:


13732

지점을 가리키면서 지점의 이름을 바꾸려면 다음을 수행하십시오.

git branch -m <oldname> <newname>

현재 지점의 이름을 바꾸려면 다음을 수행하십시오.

git branch -m <newname>

이것을 기억하는 방법 은 파일의 이름을 바꾸는 방법 인 -m"이동"(또는 mv)입니다. 별칭을 추가하면 도움이 될 수 있습니다. 이렇게하려면 다음을 실행하십시오.

git config --global alias.rename 'branch -m'

Windows 또는 대소 문자를 구분하지 않는 다른 파일 시스템에 있고 이름에 대문자 변경 사항 만있는 경우을 사용해야합니다 -M. 그렇지 않으면 git은 이미 분기 오류 가 발생합니다.

git branch -M <newname>

87
내가 정말로 알고 싶었던 것은 이것이 밀고 갔을 때 반드시 원격 브랜치에 영향을 미치는지 여부입니다.
— PandaWood

181
@ PandaWood : 푸시하면 새 분기가 추가되지만 이전 분기는 삭제되지 않습니다. 을 사용 git push -f --mirror하면 원격에서 브랜치의 이름이 바뀌지 만 원격이 단순히 현재 저장소의 사본 인 경우에만이 방법을 사용해야합니다. 또한이 질문을보십시오 : stackoverflow.com/questions/1526794/git-rename-remote-branch
— siride

19
@PandaWood, 그것은 push.default구성 방법에 달려 있습니다. 기본적으로 ( matching) 이름이 일치하는 리모컨으로 푸시됩니다. 당신은해야 git push origin <newname>:<oldname>하거나 새로운 원격 지점을 만들 것입니다. 그러나 이로 push.default설정되어 있으면 리모컨의 이전 이름으로 이동할 upstream수 있습니다 push origin head.
— Erin Stanfill

13
@ NightOwl888 : -m은 mv파일 이름 바꾸기에 대한 유닉스 관례에 따라 "이동"의 줄임말입니다 . 그 이유는 디렉토리 기반 inode 파일 시스템에서 이동 및 이름 바꾸기가 완전히 동일하기 때문입니다.
— siride

51
-m옵션 의 긴 이름은 --move예를 들어 git branch --move master현재 분기의 이름을 "마스터"로 바꿉니다.
— robenkleene

445
git branch -m old_branch_name new_branch_name

위의 명령은 브랜치 이름을 변경하지만 이름이 바뀐 브랜치를 사용하는 데에는주의해야합니다. 이름이 바뀐 브랜치와 연관된 기존 업스트림 브랜치가있는 경우이를 참조하기 때문입니다.

로컬 브랜치의 이름이 new_branch_name (예제 이름)으로 변경된 후 일부 변경 사항을 마스터로 푸시하려면 다음을 수행하십시오.

git push origin new_branch_name:master (현재 변경 사항은 마스터 지점으로 이동하지만 로컬 지점 이름은 new_branch_name입니다)

자세한 내용은 " Git에서 로컬 지점 이름을 바꾸는 방법 "을 참조하십시오 .


326

현재 지점의 이름을 바꾸려면

git branch -m <newname>

159
git은 브랜치가 이미 존재한다는 것을 알리기 때문에 대문자를 변경하는 경우 -M을 사용하여 이름을 바꾸어야합니다.
— cjspurgeon

288

지점 이름을 바꾸는 단계는 다음과 같습니다.

  1. 이름을 변경해야하는 지점으로 전환
  2. git branch -m <new_name>
  3. git push origin :<old_name>
  4. git push origin <new_name>:refs/heads/<new_name>

편집 (2017 년 12 월 1 일) : 명령을 실행 git status하고 새로 생성 된 분기가 이전 분기가 아닌 자체 참조를 가리키는 지 확인하십시오 . 이전 분기에 대한 참조를 찾으면 다음을 사용하여 업스트림을 설정 해제해야합니다.

git branch --unset-upstream

1
어느 단계에서 업스트림을 해제합니까? 4 단계 전에?
— Cyclonecode

1
제대로 이름 변경 완료하는 전체 과정을 설명 이것은 최선의 대답은 여기에
— 크리스 Halcrow

212

지점 이름을 변경하면 지점이 완료되면 유용합니다. 그런 다음 새로운 것들이오고 있으며, 당신은 그것을 삭제하는 대신 같은 지점에서 개발하고 새로운 것을 만들고 싶습니다.

내 경험상 Git에서 로컬 및 원격 지점의 이름을 바꾸려면 다음 단계를 수행해야합니다.

여러 상태 에서 인용 -자식에서 로컬 및 원격 지점 이름 바꾸기

1. 현지 지사 이름 변경

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

git branch -m new-name

다른 지점에있는 경우 :

git branch -m old-name new-name

2. 이전 이름의 원격 지점을 삭제하고 새 이름의 로컬 지점을 누릅니다.

git push origin :old-name new-name

3. 새로운 이름의 로컬 지점에 대한 업스트림 지점을 재설정

git push origin -u new-name

1
이것은 나를 위해 더 잘 작동했습니다. 여기 2 단계에서 다음과 같은 오류가 발생했습니다.error: dst ref refs/heads/<old-name> receives from more than one src.; error: failed to push some refs to 'git@uri:foo/bar.git'
— Anto

1
명령을 git push origin :old-name new-name올바르게 실행할 때 문제가 있습니까?
— trungk18

그렇습니다 (죄송합니다. "2 단계"가 아니라 "2 단계"를 의미했습니다 – 피곤함)
— Anto

116

지금까지 정답은 맞지만 여기에 몇 가지 추가 정보가 있습니다.

분기 이름을 '-m'(이동)으로 안전하게 바꿀 수 있지만 이름이 같은 기존 분기가 이미 있더라도 이름을 강제로 변경하기 때문에 '-M'에주의해야합니다. 다음은 'git-branch'매뉴얼 페이지에서 발췌 한 내용입니다.

-m 또는 -M 옵션을 사용 <oldbranch>하면 이름이로 변경됩니다 <newbranch>. <oldbranch>해당 reflog가 있으면 일치하도록 이름이 바뀌고 <newbranch>분기 이름 변경을 기억하기 위해 reflog 항목이 작성됩니다. 경우 <newbranch>존재 -M이 일어날 이름 바꾸기를 강제로 사용되어야합니다.


2
덮어 쓴 지점은 어떻게됩니까?
— 케빈 주사위

새 이름 / 지점으로 덮어 씁니다. 예를 들어 git에 다음과 같은 분기가있는 경우 : master b1 <- 'git branch -M b2'를 수행 한 후 현재 분기 b2 만 가질 수 있습니다. master b2 <-현재 분기 b1은 사라지고 원하는 경우 그것을 복구하면 해시로 확인해야합니다. 'git reflog'를 입력하면 볼 수 있습니다. 건배.
— Vanchev

-M분기 이름의 대 / 소문자를 수정하는 경우 (예 :로 변경) 이 플래그는 이름을 강제로 바꾸는 데에도 유용 myBranch합니다 MyBranch. ( -m, git returns fatal: A branch named 'MyBranch' already exists.)
— Jon Schneider

92

1. 이름 바꾸기

현재 지점 인 경우에는

git branch -m new_name

다른 지점 인 경우 이름을 바꾸고 싶습니다

git branch -m old_name new_name

2. 새로운 원격 지점 추적

-지점이 푸시 된 경우 이름을 바꾼 후 원격 Git 저장소에서 지점을 삭제하고 새 로컬에 새 원격 지점을 추적하도록 요청하십시오.

git push origin :old_name
git push --set-upstream origin new_name

74

어리석게 하이픈으로 시작하는 지점 이름을 지정한 다음 master를 체크 아웃했습니다. 분기 를 삭제 하고 싶지 않았습니다 .

이들 중 어느 것도 효과가 없었습니다.

git checkout -dumb-name

git checkout -- -dumb-name

"s, 's 및 \s도 도움이되지 않았습니다. git branch -m작동하지 않습니다.

마지막으로 수정 한 방법은 다음과 같습니다. 작업 복사본의 .git / refs / heads로 이동하여 파일 이름 "-dumb-name"을 찾고 지점의 해시를 가져옵니다. 그런 다음 체크 아웃하고 새 이름을 가진 새 브랜치를 만든 다음 이전 브랜치를 삭제합니다.

git checkout {hash}
git checkout -b brilliant-name
git branch -d -- -dumb-name

8
참조 / 헤드에서 파일 이름을 변경하지 못했습니까?
— android.weasel

같게. 이 마술을하기 위해 디렉토리 구조를 파헤쳐 야하는 경우 모든 방법으로 'mv--dumb-name brilliant-name'을 수행하십시오. 'git branch -av'를 수행하면 디렉토리 구조가 나타납니다. .git / refs. 또는 'grep -R ^ .git / refs'를 사용하여 해시를 직접 볼 수 있습니다.
— Dave X

2
당신은 아마 사용할 수도reflog
— 코드 속살을

솔직히, 그것이 당신이 가고 싶었던 경로라면, 나는 .git 디렉토리를 통해 처음부터 (Imo 혼란스럽고 잠재적으로 위험한 일을 피할 수 있음) 피하고, 일부와 함께하십시오. "git log"구문 분석 (적절한 플래그를 사용하여 브랜치를 표시하고 새 브랜치를 체크 아웃하려는 shasum을 파악)하는 일반 명령을 수행 한 다음 수행하십시오. 그런 다음 이름이 지정된 분기를 제거하십시오. 나는 경멸 그 자식이 당신이 어떤 일을하는 자사의 내부 동작을 모두 이해할 필요가 있다고 주장하지만, 크게는 것을 이해할 수있는 그 일을.
— Jon V

2.10.1+에서 잘못된 이름의 브랜치를 만드는 것은 더 어렵습니다. 어떻게 든 그렇게한다면 git branch -v를 사용하여 분기의 짧은 해시 버전을 얻을 수 있습니다 (원격의 경우 -r 추가). 그런 다음 git rev-parse <shorthash>를 사용하여 필요한 경우 전체 해시를 얻을 수 있습니다.
— 덱스터의 집

67

지점의 이름을 로컬로 바꾸려면 :

git branch -m [old-branch] [new-branch]

이제 원격 서버에서도 이러한 변경 사항을 전파해야합니다.

삭제 된 이전 분기의 변경 사항을 푸시하려면 다음을 수행하십시오.

git push origin :[old-branch]

새 지점 생성 변경 사항을 푸시하려면

git push origin [new-branch]

57

remoteGitHub뿐만 아니라 이름의 변경 사항을 복제하는 단 3 단계 :

1 단계 git branch -m old_branchname new_branchname

2 단계 git push origin :old_branchname new_branchname

3 단계 git push --set-upstream origin new_branchname


2
나는 또한 하나의 추가 작업을 수행해야했습니다 : git push --set-upstream origin new_branchname@Nomade 답변에 언급되어 있습니다
— IbrahimShendy

2
3 단계는 필요하지 않습니다. 2 단계 이후 모든 것이 최신 상태였습니다.
— Dev

@Dev 모든 경우에 Dev는 비트 버킷과 코드 커밋을 사용한 이후로 최근에 업데이트해야했습니다. 3 단계가 필요합니다
— Harry_pb

40

이 명령을 사용하여 분기의 이름을 바꾸십시오.

git branch -m [old_branch_name] [new_branch_name]

-m: 지점의 이름을 바꾸거나 이동합니다. 이미 지점이 있으면 오류가 발생합니다.

이미 지점이 있고 해당 지점으로 이름을 바꾸려면 다음을 사용하십시오.

 git rename -M [old_branch_name] [new_branch_name]

도움말에 대한 자세한 정보를 보려면 터미널에서이 명령을 사용하십시오.

git branch --help

또는

man git branch

40

고급 Git 사용자는 다음을 사용하여 수동으로 이름을 바꿀 수 있습니다.

Rename the old branch under .git/refs/heads to the new name

Rename the old branch under .git/logs/refs/heads to the new name

Update the .git/HEAD to point to yout new branch name

34
  1. 현지 지점의 이름을 바꿉니다.

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

git branch -m new-name

다른 지점에있는 경우 :

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

git push origin :old-name new-name

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

git push origin -u new-name

또는 빠른 방법으로 다음 3 단계를 수행 할 수 있습니다.

# 로컬로 지점 이름 바꾸기

git branch -m old_branch new_branch  

# 오래된 원격 지점 삭제

git push origin :old_branch  

# 새로운 지점을 누르고 새로운 지점을 추적하도록 로컬 지점을 설정합니다

git push --set-upstream origin new_branch   

참조 : https://www.w3docs.com/snippets/git/how-to-rename-git-local-and-remote-branches.html


이것은 나를 위해 작동
— Vazgen Manukyan

26

세 단계는 다음과 같습니다. 터미널 내부에서 전화를 걸고 지사 이름을 변경할 수있는 명령입니다.

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

더 필요한 경우 : 단계별로 Git 지점 이름을 변경하는 방법 에 대한 좋은 기사입니다.


25

아마도 다른 사람들이 언급했듯이 이것은 분기 명명의 경우 불일치입니다.

이러한 상황이 발생하면 Windows를 사용하고 있다고 추측 할 수 있습니다.

$ git branch -m CaseSensitive casesensitive
fatal: A branch named 'casesensitive' already exists.

그런 다음 중간 단계를 수행해야합니다.

$ git branch -m temporary
$ git branch -m casesensitive

더 이상 없습니다.


1
이러한 상황이 또한 맥에 발생할 수 있습니다 또한 파일 시스템에 (매우 성가 시게)의 경우를 구분.
— Jon V

또는 이러한 단계의 "케이싱 수정"이름 바꾸기를 한 번에 수행 하는 -M대신 사용할 수 있습니다 -m.
— Jon Schneider

23

질문에 구체적으로 답변하려고합니다 (적어도 제목).

로컬 지점의 이름을 바꿀 수도 있지만 원격에서 이전 이름을 계속 추적합니다.

git branch -m old_branch new_branch
git push --set-upstream origin new_branch:old_branch

이제을 실행 git push하면 원격 old_branch참조가 로컬로 업데이트됩니다 new_branch.

이 구성 을 알고 기억 해야합니다. 그러나 원격 브랜치 이름을 선택할 수 없지만 유용하지 않으면 유용 할 수 있습니다 (오, 나는 그것을 좋아하지 않는 좋은 이유가 있습니다!). 현지 지사의 이름.

가져 오기 구성을 사용하여 로컬 원격 참조의 이름을 바꿀 수도 있습니다. 즉, refs/remote/origin/new_branch분기에 대한 ref 포인터를 갖는 것은 실제로 old_branchon origin입니다. 그러나 나는 당신의 마음의 안전을 위해 이것을 권장하지 않습니다.


22

지점을 로컬로 변경하는 것은 매우 쉽습니다 ...

지점에 이름을 변경하려는 경우 다음과 같이하십시오.

git branch -m my_new_branch

당신은에있는 경우 그렇지 않은 경우, master또는 다른 지점 이외의 다른 사용자가 이름을 변경하려면, 단순히 수행

git branch -m my_old_branch my_new_branch

또한 아래 이미지를 작성하여 명령 행 에서이를 실제로 표시합니다 . 이 경우 master지점에 있습니다. 예를 들면 다음과 같습니다.

지점 이름을 로컬로 변경


21

SourceTree 를 사용하고자한다면 (권장), 지점을 마우스 오른쪽 단추로 클릭하고 '이름 바꾸기'를 선택하십시오.

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


20

분리 된 HEAD 상태를 제외하고 현재 분기의 이름을 바꾸려면이 별명을 사용할 수도 있습니다.

[alias]
    mvh = !sh -c 'git branch -m `git rev-parse --abbrev-ref HEAD` $1'

18

다른 옵션은 명령 행을 전혀 사용하지 않는 것입니다. SourceTree 와 같은 Git GUI 클라이언트는 이와 같은 질문을 스택 오버플로에서 가장 많이 보는 구문 학습 곡선 / 고통을 없애줍니다.

SourceTree에서 왼쪽의 "분기"분할 창에서 로컬 분기를 마우스 오른쪽 단추로 클릭하고 "이름 바꾸기 ..."를 선택하십시오.


5
나는 그것을 고통이라고 부르지 않을 것이다. git 명령은 사용하기가 매우 쉽습니다. 일단이 답변을 본 후에는 다시는 돌아 오지 않을 것입니다. 문제는 git 명령 줄 의 문서 가 직관적이지 않은 것 같습니다 .
— Nearoo

1
사실이지만 SourceTree를 사용하면 문서 확인에 대해 걱정할 필요가 없습니다. 일반적으로 모든 것이 직관적입니다. 마우스 오른쪽 버튼을 클릭하고 옵션이 무엇인지 확인하십시오. (BTW 나는 도구와 마찬가지로 어떤 식 으로든 그들과 제휴하지 않습니다!)
— Steve Chambers

17

간단한 방법 :

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

자세한 내용은 이것을 참조 하십시오 .


15

지점을 원격 서버로 푸시하지 않기 때문에이 예제가 유용합니다.

"my-hot-feature"라는 기존 분기가 있고 이름을 "feature-15"로 바꾸려고한다고 가정하겠습니다.

먼저 로컬 지점을 변경하려고합니다. 이것은 더 쉬울 수 없었다 :

git branch -m my-hot-feature feature-15

자세한 내용 은 Git 지점의 로컬 및 원격 이름 바꾸기를 방문하십시오 .


13

힘내 버전 2.9.2

사용중인 로컬 지점의 이름을 변경하려면 다음을 수행하십시오.

git branch -m new_name

다른 지점의 이름을 변경하려면 다음을 수행하십시오.

git branch -m old_name new_name

다른 분기의 이름을 이미 존재하는 이름으로 변경하려면 다음을 수행하십시오.

git branch -M old_name new_name_that_already_exists

참고 : 마지막 명령은 파괴적이며 브랜치의 이름을 바꾸지 만 브랜치 이름은 고유해야하기 때문에 해당 이름과 커밋이있는 기존 브랜치를 잃게됩니다.


11

현재 분기의 이름을 변경하려면 다음을 실행하십시오.

git branch -m [old_branch] [new_branch]

이전 원격 분기를 삭제하려면 다음을 실행하십시오.

git push origin :[old_branch]

이전 원격 분기를 삭제하고 새 원격 분기를 작성하려면 다음을 실행하십시오.

git push origin :old_branch new_branch

6

Git 브랜치 이름 변경은 다음을 사용하여 수행 할 수 있습니다.

  1. git branch -m oldBranch newBranch

  2. git branch -M oldBranch ExistingBranch

-m 과 -M 의 차이점 :

-m : 당신이 사용하여 기존 지점의 이름으로 지점의 이름을 변경하려는 경우 -m을 . 분기가 이미 존재한다는 오류가 발생합니다. 고유 한 이름을 지정해야합니다.

그러나,

-M : 이름이 존재하더라도 이름을 강제로 바꾸는 데 도움이됩니다. 따라서 기존 지점은 전체 지점을 덮어 씁니다 ...

다음은 Git 터미널 예제입니다.

mohideen@dev:~/project/myapp/sunithamakeup$ git branch
  master
  master0
  new_master
  test
* test1
mohideen@dev:~/project/myapp/sunithamakeup$ git branch -m test1 test
fatal: A branch named 'test' already exists.
mohideen@dev:~/project/myapp/sunithamakeup$ git branch -M test1 test
mohideen@dev:~/project/myapp/sunithamakeup$ git branch
  master
  master0
  new_master
* test
mohideen@dev:~/project/myapp/sunithamakeup$

5

Git GUI 사용자에게는 훨씬 간단하지 못했습니다. Git GUI의 메뉴 항목 Branch : Rename에서 생성 된 "Rename Branch"대화 상자의 드롭 다운 목록에서 지점 이름을 선택하고 새 이름을 입력 한 다음 "Rename"을 클릭하십시오. 드롭 다운 목록을 찾을 위치를 강조했습니다.

로컬 Git 브랜치 이름 바꾸기


3

원하는 경우 :

  • Git 저장소의 이름을 바꾸고 다음을 실행하십시오. git branch -m <oldname> <newname>
  • 다음을 수행하여 이전 분기를 삭제하십시오. git push origin: old-name new-name
  • 다음을 사용하여 커밋하십시오. git commit <newname>
    • 다음을 사용하여 푸시하십시오. git push origin new_branch_name:master
  • 상태를 확인하려면 다음을 사용하십시오. git status
  • 체크 아웃하려면 다음을 사용하십시오. git checkout

3

이전의 모든 답변에 대해 이야기하고 git branch -m있습니다. 물론 작동하기는 쉽지만 다른 Git 명령을 기억하기가 조금 어려울 수 있습니다. 그래서 나는 익숙한 명령으로 일을 끝내려고했습니다. 네, 짐작 하셨을 것입니다.

사용 git branch -b <new_branch_name>합니다. 그리고 이전 브랜치를 저장하지 않으려면 지금 실행 git branch -D <old_branch_name>하여 제거하십시오.

조금 지루할 수도 있지만 이해하고 기억하기가 더 쉽습니다. 도움이 되길 바랍니다.


명령을 기억하는 데 문제가 있으면 쉘 또는 git 별칭을 직접 설정할 수 있습니다.
— sean

다른 컴퓨터에서 명령을 실행해야하는 경우 어떻게합니까?
— 다이 Kaixian

1

PhpStorm에서 :

VCS → Git → 지점 ... → 로컬 지점 → _your_branch_ → 이름 바꾸기


0

세 단계 만 수행하면됩니다.

  1. .git / refs / heads 아래의 오래된 지점에 새 이름을 지정하십시오.
  2. .git / logs / refs / heads 아래의 이전 지점에 새 이름을 지정하십시오.
  3. .git / HEAD를 업데이트하여 새로운 브랜치 이름으로 연결하십시오
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.