로컬 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.