'마스터'를 '원산지 / 마스터'로 어떻게 재설정합니까?


215

더 간단한 방법으로 다음을 수행 할 수 있습니까?

git checkout origin/master
git branch -D master
git branch master
git checkout master

때때로,이 작업 트리를 건드리지 않고 수행 할 수 있습니다 stackoverflow.com/a/12343727/586086
앤드류 마오

6
허용되는 답변을 업데이트하십시오 : @KindDragon의 답변이 정확하고 짧습니다.
Robert Siemer

답변:


310

KindDragon답변에서 언급 했듯이 다음을 사용하여 master직접 다시 만들 수 있습니다 origin/master.

git checkout -B master origin/master

git checkout매뉴얼 페이지 언급 :

경우 -B주어, <new_branch>존재하지 않는 경우 생성된다; 그렇지 않으면 재설정 됩니다. 이것은 거래에 해당합니다.

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

원래 제안 :

다음과 같은 것 :

$ git checkout master

# remember where the master was referencing to
$ git branch previous_master

# Reset master back to origin/master
$ git reset --hard origin/master

2 단계는 선택 사항입니다.


1
한 줄로 할 수 있습니다.
Robert Siemer

93

힘내이 명령을 지원합니다 :

git checkout -B master origin/master

아웃 확인 origin/master지점을 한 후 다시 master이 지점을.


4
유일한 대답입니다.
Robert Siemer

3
네 개의 키 입력을 저장하십시오-따옴표가 필요하지 않습니다. 그냥 : git checkout -B master origin / master
zumalifeguard 2

두 가지를 커밋했다고 가정 해 보겠습니다. 첫 번째는 지사와의 병합이고 두 번째는 규칙적입니다. 출발지 / 마스터로 돌아 가면 병합은 어떻게 되나요?
utdev

1
하지 당신이해야합니까 git fetch origin master전에 확인하기 위해 origin/master업데이트됩니까?
pedrozath

예, 물론 모든 솔루션을 사용하여 git fetch먼저 해야합니다
KindDragon

29

VonC의 답변 조차도이 옵션에 비해 복잡하다고 생각합니다.

git update-ref refs/heads/master origin/master
git reset --hard master

git은 reflog를 통해 ref의 모든 값을 자동으로 기록합니다. 따라서 해당 명령을 실행 한 후 master@{1}이전 master 값 을 참조하십시오.

VonC의 대답은 정확하지만 파일 시스템에서 이전 master 값을 체크 아웃하는 데 시간이 낭비됩니다.

리포지토리의 고아 개체에 관심이 있다면 다음을 실행할 수 있습니다. git gc


1
흥미로운 대안으로 들립니다. +1
VonC 2014 년

난 여전히 얻을Already on 'master'
yourfriendzak

@ yourfriendzak, 마스터를 업데이트하기 전에 이미 마스터를 체크 아웃했을 수도 있다는 점을 잊어 버렸습니다. 그 경우에도 작동 해야하는 답변으로 업데이트했습니다.
Alexander Bird

마스터가 아닌 경우에도 작동합니다 (실제로 팁 원점 / 마스터를 가리키는 분리 된 HEAD 상태). 그런 다음 repo를 통해 오래된 파일을 뒤집지 않고도 마스터를 체크 아웃 할 수 있습니다. 큰!
Andrew Mao

20

이미 사용중인 경우 master다음을 수행 할 수 있습니다.

git reset --hard origin/master

로컬 master분기가 원격을 가리키고 origin/master작업 디렉토리의 수정 사항을 버립니다.


그리고 파일을 삭제합니다! 파일을 생성 / 편집하고 "git add"를 실행 한 경우이 명령은 파일을 삭제합니다. 경고 받다.
Cheeso

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