GitHub에서 브랜치 이름 바꾸기


296

방금 사용하여 로컬 지점의 이름을 바꿨습니다.

git branch -m oldname newname

그러나 이것은 지점의 로컬 버전 이름 만 바꿉니다. GitHub에서 이름을 바꾸려면 어떻게해야합니까?



관리자 설정을 확인 했습니까? github의 현재 프로젝트에는 분기가 없지만 리포지토리의 이름을 바꿀 수 있으므로 분기의 이름을 바꿀 수도 있다고 생각합니다.
evanmcdonnal

12
@evanmcdonnal 아니요, GitHub 사이트에서 Git 브랜치의 이름을 바꿀 수 없습니다.
Andrew Marshall

이 질문에 대한 대답은 거의 보편적으로 잘못되었습니다. 문제는 git 브랜치의 이름을 바꾸는 방법이 아니라 github 브랜치의 이름을 바꾸는 방법 입니다. github의 많은 것들이 브랜치에 묶여있어 모든 답변이 그러한 것들을 포함해야한다는 것을 의미합니다. 이름 바꾸기 예를 들어 마스터
G 맨

@gman 가치있는 것에 대해서는이 답변이 OP의 질문의 정신에 답한 것 같습니다. OP의 질문은 기술적으로 정확한 관점 또는 현재보고있는 관련 문제에서 완벽하게 표현되지 않았을 수 있습니다. 그러나이 질문은 git 또는 GitHub의 기술적 배경이 아닙니다. 이러한 관점에서, 이것을 "초보자"또는 기초 질문으로 간주 할 수 있습니다. 따라서이 청중에 대해 적절하게 표현되어 있습니다. 실망 스럽지만이 Q, 이러한 답변은 사전 BLM git / 허브 사용 Q에 대해 적절하고 관련성이 있다고 생각합니다.
SherylHohman

답변:


309

언급 한 바와 같이 Github에서 이전 명령을 삭제하고 다시 밀어 넣으십시오. 그러나 사용 된 명령은 필요한 것보다 조금 더 장황합니다.

git push origin :name_of_the_old_branch_on_github
git push origin new_name_of_the_branch_that_is_local

단순한. git push 명령은 명령을 조금만 빼면 본질적으로 다음과 같습니다.

git push <remote> <local_branch>:<remote_branch>

따라서 local_branch를 지정하지 않고 푸시를 수행하는 것은 본질적으로 "내 로컬 저장소에서 아무것도 가져 가지 않고 원격 브랜치로 만듭니다"를 의미합니다. 나는 항상 이것이 완전히 엉뚱하다고 생각했지만 그것이 끝난 방식입니다.

편집 : 현재 힘내 1.7 원격 지점을 삭제하기위한 대체 구문이있다 :

git push origin --delete name_of_the_remote_branch

편집 : 의견에서 @ void.pointer에서 언급했듯이

두 가지 푸시 조작을 결합 할 수 있습니다.

git push origin :old_branch new_branch

이전 분기를 삭제하고 새 분기를 푸시합니다.

이것은 원격의 원래 브랜치 및 새 브랜치 이름을 인수로 사용하는 간단한 별명으로 바꿀 수 있습니다 ~/.gitconfig.

[alias]
    branchm = "!git branch -m $2 $3 && git push $1 :$2 $3 -u #"

용법:

git branchm origin old_branch new_branch

쉘 명령의 위치 인수는 git의 이전 버전 (2.8 이전)에서 문제가되었으므로 별칭은 git 버전에 따라 달라질 수 있습니다. 자세한 내용은 이 토론 을 참조하십시오.


32
두 가지 푸시 조작을 결합 할 수 있습니다 git push origin :old_branch new_branch.. 이전 분기를 삭제하고 새 분기를 푸시합니다.
void.pointer

4
이전 분기를 삭제하기 전에 새 분기를 푸시 할 수없는 이유가 있습니까? 개인적으로 문제가 발생하는 경우를 대비하여 작성 작업이 성공한 후 삭제 작업이 발생하는 프로세스를 선호합니다.
jmort253

7
작동하지 않습니다. 이전 이름으로 Github에 지점을 다시 배치합니다.
geoff

1
1. @AdamParkin git branch -m new_branch(이름 바꾸기 old_branch에 new_branch) 2. git commit -m 'msg'3. git push4. 그런가, old_branch 쇼까지 Github에서, 구글 질문 나는 당신의 대답 (5)을 주도하고에 git push origin :old_branch6 (이 삭제 말한다) git push origin new_branch... 완료는 말한다 * [new branch] new_branch -> old_branch. Github로 돌아가서 다시 old_branch나타납니다. Github 웹 UI에서 삭제하면 "복원"옵션이 있으므로 new_branch를 푸시하는 것이 복원 중입니다.
Kcvin

2
한 가지 알아야 할 것은 브랜치의 이름을 바꾸면 해당 풀 요청에 대해 열려있는 모든 풀 요청이 자동으로 닫히게된다는 것입니다. 분기 이름을 변경 한 다음 모든 풀 요청을 수동으로 다시 열어야했습니다 ....
jmort253

24

다음 명령이 나를 위해 일했습니다.

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

이것은 간단한 답변입니다. BTW, 첫 번째 명령은 응답의 마지막 명령으로도 사용할 수 있습니다.
Eric Wang

이 답변은 github github
gman

1
실제로, 나는이 작업을 두 번 수행했으며 github에서 작동했습니다.
spozun

17

git branch 이름을 변경하는 방법에 대한 3 가지 명령을 찾았습니다.이 명령은 더 빠른 방법입니다.

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 로컬 및 원격 지점의 이름을 바꾸는 방법


1
git push --set-upstream원격 지사를 삭제하기 전에 github 앱을 사용하여 지사 이름을 로컬로 변경하는 경우 가장 중요한 부분입니다.
루이 양

이 답변은 github github
gman

12

이전 분기를 제거하고 새 분기를 만드십시오.

예 (원격 지사 이름 바꾸기) :

git push origin :refs/heads/oldname
git push origin newname:refs/heads/newname

로컬 브랜치의 이름을 바꾸고 푸시 / 풀 위치에 대한 설정을 변경해야 할 수도 있습니다.


1
두 번째 명령이 아니어야합니까 git push origin newname:refs/heads/newname? master와 newname은 같은 커밋을 가리 키지 않을 수 있습니다.
Steve Folly

"마스터"는 예와 같습니다. 이제 변경됩니다.
Vi.

어쩌면 두 명령의 순서를 반대로해야합니다 (즉, 먼저 새 이름을 업로드하고 그 이후에 오래된 이름 제거)
Vi.

이 답변은 github github
gman

@gman, 이름을 바꾸지 않나요? Git-wise도 Github-wise로 바꾸나요?
Vi.

9

git local 및 remote에서 브랜치 이름 바꾸기

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

결론은

git branch -m new-name
git push origin :old-name new-name
git push origin -u new-name

이 답변은 github github
gman

이것은 자식 용이고 GitHub는 자식 용이므로 작동하고 나와 다른 사람들과 함께 작동합니다
Abdelrahman Mohamed

작동하지 않습니다. 첫 번째 단계와 두 번째 단계를 시도하십시오 git branch -m new-name && git push origin :master new-name. 실패합니다. 이 답변이 github이 아닌 git에 관한 것이라면이 질문은 다른 몇 가지 질문과 중복되므로 닫아야합니다. 그것이 실제로 github에 관한 것이라면 대답은 github을 포함해야합니다. 이 답변은 그렇지 않습니다.
gman


2

다음은 나를 위해 일한 것입니다.

1.) 새로운 브랜치를 먼저 생성하십시오 : git push github newname : refs / heads / newname

2.) github 사이트에서 설정으로 이동하여 기본 분기를 newname으로 변경하십시오.

3.) 이전 이름 ​​삭제 git push github --delete oldname


0
  1. 다운로드 골드 피처 SourceTree (무료).
  2. 저장소의 로컬 복제본을 가져 오십시오.
  3. 사이드 바에서 지점을 마우스 오른쪽 버튼으로 클릭하여 이름을 바꿉니다. 상황에 맞는 메뉴에서 "분기 이름 바꾸기 ..."를 선택하고 이름을 바꿉니다.
  4. 원점으로 푸시합니다.

고마워하지만 가져 오기뿐만 아니라 지점으로 전환해야했습니다.
플래시 셰리 던

1
이 답변은 github github
gman

0

이 기사는 실제로 쉽게 수행하는 방법을 보여줍니다.
1. 로컬 힘내 지점의 이름을 변경하려면, 우리가 이름 수정 힘내 분기 -m 명령을 사용할 수 있습니다 :
git branch -m feature1 feature2
당신은 그냥 원격 힘내 지점의 이름을 변경하는 명령을 찾고 있다면 2, 이것은이 "
git push -u origin feature2:feature3
더이 있는지 확인하지 이 작업을 수행하기 전에 지점에 태그를 추가하십시오 git tag.


이 답변은 github github
gman을

0

다른 방법은 다음 파일의 이름바꾸는 것입니다 .

  1. 프로젝트 디렉토리를 탐색
  2. 이름 바꾸기 .git/refs/head/[branch-name].git/refs/head/new-branch-name
  3. 이름 바꾸기 .git/refs/remotes/[all-remote-names]/[branch-name].git/refs/remotes/[all-remote-names]/new-branch-name

로컬 PC 원산지 / 원격 서버 모두에서 헤드 및 리모컨 이름 바꾸기

지점 이름이 변경되었습니다 (로컬 및 원격!).


주의

현재 branch-name에 슬래시 ( /) 가 포함되어 있으면 git은 다음과 같이 디렉토리를 만듭니다.

현재 지점 이름 : "awe/some/branch"

  • .git/refs/head/awe/some/branch
  • .git/refs/remotes/[all-remote-names]/awe/some/branch

희망 지점 이름 : "new-branch-name"

  1. 프로젝트 디렉토리를 탐색
  2. 에서 branch파일을 복사.git/refs/*/awe/some/
  3. 에 넣어 .git/refs/head/.
  4. branch모든 파일을 복사.git/refs/remotes/*/awe/some/
  5. 에 넣으십시오 .git/refs/remotes/*/.
  6. 모든 opi branch파일의 이름을로 바꿉니다 new-branch-name.
  7. 디렉토리와 파일 구조가 다음과 같은지 확인하십시오.
    • .git/refs/head/new-branch-name
    • .git/refs/remotes/[all-remote-names]/new-branch-name
  8. 모든 원격 출처 / 서버에서 동일한 작업을 수행하십시오 (있는 경우).
    • info : 원격 서버에는 이미 원격 서버에 있기 때문에 일반적으로 refs / remotes / * 디렉토리가 없습니다.)

지점의 이름 awe/some/branchnew-branch-name(로컬 및 원격)으로 변경되었습니다 .

branch-name의 디렉토리가 제거되었습니다.


정보 : 이 방법은 최고는 아니지만 다른 방법으로 문제가있는 사람들에게는 여전히 효과적입니다.


이 답변은 github github
gman

0

내 경우에는 이름이 바뀐 분기를 푸시하기 위해 추가 명령 이 필요했습니다.
git branch --unset-upstream
origin newname .

(입력하기 쉽도록) 먼저 git checkout oldname.
그런 다음 다음을 실행하십시오.

git branch -m newname
git push origin :oldname 또는 또는git push origin --delete oldname
git branch --unset-upstream
git push -u origin newname git push origin newname

이 추가 단계는를 통해 지점에 원격 추적을 설정하기 때문에 필요할 수 있습니다 . 이 방법으로 체크 아웃하면 나중에 유형 이 필요합니다.git push -u origin oldnameoldnamegit pushgit push origin oldname

내가 않는 경우 NOT 명령을 사용 git branch --unset-upstream하기 전에 git push origin newbranch, 자식 재 - 생성 oldbranch 과 푸시 newbranchorigin oldbranch- 내 의도를 물리 치고.


이 답변은 github github
gman

@gman Point이 (가) 촬영되었습니다. 내 솔루션은 git을 로컬로 사용하여 GitHub 리포지토리의 로컬 git 복사본에서 이름을 바꾼 후 원격으로 GitHub의 분기 이름을 바꿉니다. 따라서 GitHub 웹 사이트 인터페이스가 아닌 명령 줄을 사용하려고 할 때 업데이트하려는 로컬 클론이있는 경우 특수 솔루션으로 간주 될 수 있습니다. 이 차이점을 강조하고이 답변이 일반적인 솔루션이 아닌 특수한 경우에 대한 것임을 분명히 해 주셔서 감사합니다.
SherylHohman

문제는 github이 기능을 분기에 연결한다는 것입니다. master의 이름을 main으로 바꾸면 지침이 실패합니다.
gman

-1

다음 명령은 지점의 이름을 로컬로 바꾸고 원격 위치에서 이전 지점을 삭제 한 다음 새 지점을 밀어 로컬 지점을 설정하여 새 원격을 추적합니다.

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

코드 스 니펫이 문제를 해결할 수 있지만 코드의 목적이 무엇인지 (문제를 해결하는 방법) 설명해야합니다. 또한 stackoverflow.com/help/how-to-answer
Ahmad F

이 답변은 github github
gman

-1

그렇게 간단합니다 . git 브랜치를 로컬 및 원격으로 이름을 바꾸려면이 스 니펫을 사용하십시오 (테스트되고 매력처럼 작동 함).

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

설명:

  1. 단계 이름 바꾸기 :

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

  2. 단계 삭제 :

    Git 참조 : git push origin : experimental 오리진 저장소 (예 : 참조 / 헤드 / 실험)에서 실험과 일치하는 참조를 찾아 삭제합니다.

  3. 원격 리포지토리 단계 업데이트 (추적을위한 업스트림 참조) :

    Git 참조 : --set-upstream 최신 또는 성공적으로 푸시 된 모든 브랜치에 대해 인수가없는 git-pull [1] 및 기타 명령에서 사용하는 업스트림 (추적) 참조를 추가하십시오. 자세한 내용은 git-config [1]의 branch..merge를 참조하십시오.


이 답변은 github github
gman

-1

간단한 3 단계

  • 자식 푸시 원점 헤드

  • 자식 분기 -m 이전 지점 이름 새 지점 이름

  • 자식 푸시 원점 헤드


이 답변은 github github
gman

-1

git branch에서 git branch를 실행하십시오. -m old_name new_name 로컬 저장소 git push origin의 분기 이름을 수정합니다. : old_name new_name 수정 된 이름을 원격으로 푸시하고 이전 분기를 삭제합니다. git push origin -u new_name 로컬 분기를 추적하도록 설정합니다. 원격 지점. 이것은 문제를 해결


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