inflearn logo
강의

Course

Instructor

Quick git - Learn Git/Github by selecting only the essentials

Additional Materials - diff & revert

reset에서 head

Resolved

333

leh

2 asked

0

처음 head 개념을 설명해주신 코드 쳐보면서 얼추 개념을 알았다고 생각했는데 "추가자료 diff&revert" 부분을 보며 뭔가 잘못 이해한것 같아 질문드립니다.

 

commit을 5번 했다고 할때

가장 최근에 한 commit을 삭제하려면

git reset head^

위 명령어를 쳐야 가장 최근 커밋(5번째 커밋)이 제거되던데 왜 그런건가요??

가장 최근 commit이 head라면

git reset head 를 입력했을때 5번째 커밋이 지워져야 하는거 아닌가요??

 

테스트해본 내용 추가)

첫번째 커밋 3.txt (내용:1)

두번째 커밋 3.txt (내용:2)

세번째 커밋 3.txt (내용:3)

git reset --hard head

명령어 입력시 내용이 3에서 2로 바뀌여야 하는데 그대로 3이고 git log를 찍어봐도 마지막 commit이 그대로 있습니다.

 

반면

git reset --hard head^

명령어 입력시 내용이 3에서 2로 바뀌고 git log를 찍어보면 마지막 commit이 사라집니다.

 

*diff와 revert는 설명해주신대로 잘 작동하는데 reset만 이러하네요ㅠㅠ

git github 버전관리시스템

Answer 1

1

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

Git에서 HEAD는 현재 작업 중인 최신 커밋을 가리키는 포인터입니다. 따라서 git reset head 를 사용하면 현재 위치를 변경하지 않고 HEAD가 가리키는 커밋을 유지하게 됩니다. 반면 git reset head^ (또는 git reset HEAD~1) 를 사용하면 HEAD의 바로 이전 커밋, 즉 최신 커밋에서 한 단계 뒤로 돌아가는 것을 의미하여 최근 커밋을 제거할 수 있게 됩니다.

git reset --hard 옵션을 사용할 때, head를 사용하면 아무 변화가 없지만 head^를 사용하면 마지막 커밋이 제거되면서 워킹 디렉토리의 파일들도 이전 커밋 상태로 되돌아가게 됩니다. 여기서 --hard 옵션은 인덱스와 워킹 디렉토리 모두를 리셋 상태로 만들어 버린다는 것을 의미합니다.

이해를 돕기 위해 다음과 같은 예를 들 수 있습니다:
- git reset HEAD : 현재 커밋(HEAD)을 유지하면서 리셋 실행 (변경 사항 없음)
- git reset HEAD^ : 마지막 커밋을 없애고, 그 이전 커밋(HEAD^)으로 리셋을 실행

더 자세한 내용이나 궁금한 점이 있으시다면, Git 관련 문서를 참고하시는 것도 좋습니다. 예를 들어 Spring Boot 공식 문서에서는 다양한 ‘How-to’ 가이드를 제공하고 있으며, 필요하다면 Stack Overflow 같은 커뮤니티 사이트에서 질문을 검색하거나 새롭게 질문을 올릴 수도 있습니다. (출처: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto)

진행하시는 작업에 도움이 되길 바랍니다!

pull request에 관해

0

35

1

로컬과 원격의 상호작용 강의 질문

0

131

2

password authentication was removed

0

223

2

section3부터 맥북에서 화면이 안나옵니다.

0

207

2

Git bash 우클릭 보이지 않음

0

350

1

원격 저장소 조회(추가)

0

172

1

혹시 아래처럼 계속 파일을 찾을 수 없다는 건 어떤 의미일까요..

0

137

1

Git 맥북 다운로드

0

293

2

Git bash 다 마우스 우클릭해도 보이지 않습니다

0

414

2

pr 이후 브랜치 삭제 질문드립니다

0

953

2

블로그

0

255

2

github에서 push오류

0

261

1

git branch 관련 질문

0

217

1

Section 2 / 4강 / 3:23초 질문

0

166

1

diff & revert

0

267

1

이슈 번호를 잘못 명시한 커밋을 삭제하는 방법

0

1179

1

강의 "로컬과 원격의 상호작용 실습 (+충돌이 난 경우)" 편의 영상 7분 38초 쯤에서 질문 드립니다.

0

416

1

mac사용

0

304

1

원격 branch를 checkout 하면서 새 branch를 만드는 방법

0

442

1

git checkout 과 git switch/restore

0

2424

1

로컬 브랜치 관련 질문합니다.

0

198

3

git stash, git tag 에 대한 강의자료가 있으면 좋겠습니다

0

301

1

브랜치를 main(master) 와 동기화 하고 싶을 때

0

9149

1

git graph 질문 드립니다

0

1084

1