git reset --hard origin / master의 의미는 무엇입니까?


224

나는 git pull~를하고 오류가 발생했습니다 :

다음 작업 트리 파일을 병합하여 덮어 씁니다 ... 병합하기 전에 파일을 이동하거나 제거하십시오.

이 문제를 해결하기 위해 다음을 수행했습니다.

git fetch
git reset --hard origin/master

이제 내가 할 때 git pull모든 것을 최신 상태로 말합니다. 이 명령을 실행할 때 정확히 어떤 일이 발생하는지 알고 싶습니다. 나는 알고있다 git fetch페치 내 지역의 repo로 병합하지 않고 원격 REPO의 변경을.

의 의미는 git reset --hard origin/master무엇입니까? 어떻게 작동합니까?

답변:


414
git reset --hard origin/master

말한다 : 내 모든 단계적 및 비 단계적 변경 사항을 버리고 현재 로컬 지점의 모든 것을 잊어 버리고 정확히 동일하게 origin/master만듭니다.

명령을 실행하기 전에이 질문을하고 싶을 것입니다. 파괴적인 특성은 "하드 리셋"과 동일한 단어를 사용하여 암시됩니다.


9
을 사용하여이 이동을 취소 할 수 있습니다 git reset --hard HEAD@{1}. HEAD@{1}상황에 따라 다르므로에서 검색하는 것이 좋습니다 git reflog.
Nils Werner 12

2
@NilsWerner의 이동 취소 방법은 단계적 변경 및 단계적 변경을 복원하지 않습니다. 그것들은 잘 사라졌습니다.
Michael Anderson

3
스테이지 파일은 여전히로 찾을 수 git fsck --lost-found있지만 원래 파일 경로에 첨부되지 않고 정렬하기 어려울 수 있습니다.
CB Bailey

1
로컬 브랜치 대신 로컬 마스터에 변경 사항을 커밋했을 때 로컬 마스터 브랜치를 원래 / 마스터로 재설정하는 것이 종종 유용합니다. 최신 커밋을위한 로컬 브랜치를 생성 한 다음 로컬 마스터를 출발지 / 마스터로 재설정하십시오. 그런 다음 필요에 따라 브랜치를 마스터에서 병합하거나 리베이스 할 수 있습니다.
Mike Hopper

2
이것을 설명하는 좋은 방법은 그것이 명백한 또는 명시 적 어디에도 없기 때문에 롤, "암시"
벤 Sandeen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.