Git에서 분기 이름 전환


103

이 질문을하는 방법은 여러 가지가있을 수 있으므로 여기에 문제에 대한 설명이 있습니다. 저는 마스터 작업을하고 일부 작업을 수행 한 다음 그 작업을 보류하기로 결정했습니다. 몇 가지 커밋을 백업 한 다음 쓰레기 작업을 시작하기 전에 분기했습니다. 실제로 이것은 잘 작동하지만 이제는 주요 개발 분기로 다른 분기가 있습니다. 마스터 작업을 다시 수행하고 있지만 정크 작업이없고 작업이 다른 지점에 있다고 말하면서 어떻게 변경해야할지 궁금합니다.

이것이 질문 / 해결 될 수있는 몇 가지 방법 : 내 마스터 브랜치의 이름을 다른 이름으로 바꾸고 다른 이름을 마스터로 바꾸려면 어떻게합니까? 마스터를 백업 한 다음 이전에 백업 한 모든 커밋이 다른 브랜치에 있도록하려면 어떻게해야합니까?

모든 (빠른) 답변에 감사드립니다! 그들은 모두 좋습니다.

답변:


144

다른 주석 외에도 -m (이동) 스위치를 git-branch로 전환하는 것이 도움이 될 수 있습니다. 이전 마스터의 이름을 다른 이름으로 바꾼 다음 새 분기의 이름을 master로 바꿀 수 있습니다.

git branch -m master crap_work
git branch -m previous_master master

워크 플로에 따라 .git / config에서 분기 참조를 변경할 수도 있습니다. 마스터가 계속 동기화되도록 [branch "crap_work"]읽기로 변경 했습니다 . 물론 두 리포지토리의 상태는 여전히 이치에 맞았습니다. [branch "master"]origin/master
Eponymous

3
이것은 원격 저장소의 브랜치 이름을 바꾸지 않고 로컬 저장소에서만 이름을 변경합니다.
smohadjer 2014

1
@smohadjer 리모컨의 이름을 바꾸려면 git push -uf origin mastergit push -u origin crap_work.
zyy

31

이와 같은 문제를 방지하려면 다른 개발 전략을 고려해야한다고 생각합니다. 나에게 가장 잘 작동하는 것 같은 것은 마스터 브랜치에서 직접 개발을하지 않는 것입니다. 내가 만드는 변경 사항에 관계없이 항상 새 코드에 대한 새 분기를 만듭니다.

git checkout -b topic / topic_name master

거기에서 공개 리포지토리에 변경 사항을 푸시 할 수 있습니다.

git push pu topic / topic_name

또는 결국 내 마스터 브랜치에 다시 병합합니다.

git checkout master && git merge topic / topic_name

진정으로 이전 시점으로 돌아가서 마스터로 설정해야하는 경우 현재 브랜치의 이름을 다른 이름으로 변경 한 다음 이전 버전을 마스터로 확인할 수 있습니다.

 git branch -m 마스터 정크
 git co -b master old_sha1_value

그것은 좋은 정책입니다. 그리고 그것을 생각하면 다른 곳에서 연습하는 것을 보았습니다. 감사.
Rimian 2010-08-19

14

에서 시작하고 master라는 브랜치 in-progress를 만든 다음 master이전 커밋으로 재설정 합니다.

$ git branch in-progress
$ git reset --hard HEAD^

1
나는 이것에 대해 투표 할 이유가 없다고 생각합니다. 브랜치 -m에 대해 배우기 전에 몇 번 직접 해봤는데 마스터가 브랜치의 영구 이름으로 불변하게 묶여 있지 않다는 것을 깨달았습니다.
skiphoppy

7

이것은 비교적 쉽습니다.

git checkout -b fake_master master # fake_master now points to the same commit as master
git branch -D master               # get rid of incorrect master
git checkout -b master real_master # master now points to your actual master
git checkout master                # optional -- switch on to your master branch

1
네, 마지막은 완전히 선택 사항입니다- git checkout -b브랜치 만들고 활성화합니다.
BorisOkunskiy 2010

0

이렇게하면 마스터를 한 단계에서 원하는 지점으로 설정할 수 있습니다.

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