programing

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

testmans 2023. 5. 10. 20:32
반응형

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

나는 했습니다.git pull오류가 발생했습니다.

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

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

git fetch
git reset --hard origin/master

이제 내가 할 때git pull그것은 모든 것을 최신으로 말합니다.이러한 명령을 실행하면 정확히 어떤 일이 발생하는지 알고 싶습니다.알고있어요git fetch변경 사항을 내 로컬 레포에 병합하지 않고 원격 레포에서 변경 사항을 가져옵니다.

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

git reset --hard origin/master

says: 내 모든 준비된 변경사항과 준비되지 않은 변경사항을 버리고, 현재 지역 지점의 모든 것을 잊어버리고 정확히 동일하게 만듭니다.origin/master.

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

Git(2.23+)의 최신 버전에서는 다음을 사용할 수 있습니다.

git switch --force-create master origin/master

관련 참조 문서

위에서 답변한 바와 같이 변경 사항을 취소하고 HEAD를 강제로 다시 이동하려는 경우 이 옵션을 사용합니다.origin/master.

열심히 재설정하고 실수로 변경사항을 취소한 경우에는 언제든지 변경할 수 있습니다.git reflogHEAD가 변경될 때마다 로컬 저장소 목록을 보고 원하는 커밋샤를 확인합니다.

할 수 있는 일:

  • git checkout <commit_sha>원하는 커밋을 가리키는 새 분기를 체크아웃합니다.
  • git reset HEAD --hard <commit_sha>원하는 커밋으로 헤드를 다시 이동합니다.

이것은 마스터에 이미 있고 마스터에서 작업했지만 작업 흔적 없이 오리진/마스터로 돌아가려는 경우 마스터로 재설정하는 경우를 제외한 것입니다.

새 분기의 이름을 결정하기를 원하지 않았기 때문에 새 분기를 체크아웃하지 않았다고 가정해 보십시오.그런 다음 리포지토리 폴더를 제거하고 이전의 새로 온 시간처럼 다시 복제해야 합니다.

왜 그런 것일까요?

git reset --hard origin/master로컬 분기에 있는 경우에만 완전 삭제로 작동합니다.대신 마스터 분기에 있고 변경한 경우에는 변경하거나 변경한 모든 파일만 삭제할 수 있습니다.추가한 폴더는 삭제할 수 없습니다.이러한 폴더를 제거하려면 전체 repo 폴더를 제거하고 수동으로 제거하지 않으려면 다시 복제해야 합니다.이러한 빈 폴더는 "하드 재설정" 후에도 유지되며, 이는 .gitignore 파일에 종속되지 않습니다.

언급URL : https://stackoverflow.com/questions/15432052/what-is-the-meaning-of-git-reset-hard-origin-master

반응형