리모컨이 origin이고 브랜치가 master이고 이미 master체크 아웃 했다고 말하면 다음을 시도 할 수 있습니다.
git fetch origin
git reset --hard origin/master
이것은 기본적으로 현재 분기를 가져와 HEAD원격 분기 를 가리 킵니다 .
경고 : 코멘트에 명시된 바와 같이, 이 로컬 변경을 멀리 던질 것이다 및 기원에 무엇이든 덮어 쓰기 .
또는 배관 명령을 사용하여 본질적으로 동일한 작업을 수행 할 수 있습니다.
git fetch <remote>
git update-ref refs/heads/<branch> $(git rev-parse <remote>/<branch>)
git reset --hard
편집 : 왜 이것이 작동하는지 간략하게 설명하고 싶습니다.
.git폴더 저장소의 수에 대한 커밋을 보유 할 수 있습니다. 커밋 해시는 무작위로 생성 된 값이 아니라 실제로 커밋 내용에 대한 확인 방법이므로 저장소간에 커밋 집합을 일치시키는 데 사용됩니다.
분기는 주어진 해시에 대한 명명 된 포인터입니다. 다음은 세트의 예입니다.
$ find .git/refs -type f
.git/refs/tags/v3.8
.git/refs/heads/master
.git/refs/remotes/origin/HEAD
.git/refs/remotes/origin/master
이러한 각 파일에는 커밋을 가리키는 해시가 포함되어 있습니다.
$ cat .git/refs/remotes/origin/master
d895cb1af15c04c522a25c79cc429076987c089b
이것들은 모두 내부 git 저장 메커니즘을위한 것이며 작업 디렉토리 와 독립적으로 작동 합니다. 다음을 수행합니다.
git reset --hard origin/master
git은 origin / master가 가리키는 동일한 해시 값에서 현재 분기를 가리 킵니다. 그런 다음 해당 해시의 파일 구조 / 내용과 일치하도록 작업 디렉토리를 강제로 변경합니다.
직장에서 이것을 보려면 계속해서 다음을 시도하십시오.
git checkout -b test-branch
# see current commit and diff by the following
git show HEAD
# now point to another location
git reset --hard <remote>/<branch>
# see the changes again
git show HEAD