Develop Note by J.S.

[Git] Reset 활용 본문

DevOps/Git

[Git] Reset 활용

js-web 2023. 7. 10. 15:45
반응형

1. GIT 트리(3단계)

 - GIT은 아래 3개의 트리(파일의 묶음)를 관리하는 시스템입니다.
  1) HEAD : 현재 브랜치를 가리키는 포인터이며, 브랜치의 마지막 commit을 가리킵니다.
  2) Index : Staging Area라고도 하며 git add 명령어로 stage에 작업한 파일이 올라가는 가상의 공간
  3) Working Directory : 내용이 수정된 파일이 존재하는 공간 (Untracked files)
     * Untracked files - 이력 추적 대상이 아닌 파일, git add로 Index에 올리면 추적 대상으로 등록됩니다.

2. Work Flow

 1) 파일생성 or 수정(Working Directory) 
 2) git add [files] (Index)
 3) git commit (HEAD)

3. reset의 역할

 1) 1단계 - HEAD의 이동 (--soft)

   -> HEAD는 현재 브랜치의 마지막 커밋을 가리키는 포인터입니다. reset은 이전 커밋을 가리키도록 HEAD 포인터를 변경합니다.
   -> git reset --soft HEAD^ 명령어 실행 시 바로 이전 커밋으로만 되돌리고, 파일은 add(staging) 상태로 유지합니다.

 2) 2단계 - Index 업데이트 (--mixed : default option)

   -> 작업파일이 Stage에 올라간 상태인 Index를 HEAD와 함께 이전으로 되돌립니다 (git add 명령 실행전 상태)
   -> git reset --mixed HEAD^ 명령어 실행 시 바로 이전 커밋으로 HEAD를 돌리면서 add 또한 되돌립니다(Untracked).

 3) 3단계 - Working Directory 업데이트 (--hard : 사용시 주의)

   -> HEAD, Index, Working Directory 모두 이전 커밋으로 되돌립니다.
   -> git reset --hard HEAD^ 명령어 실행 시 이전 커밋으로 되돌리며 작업한 내용까지 모두 되돌려져 주의가 필요합니다.

4. commit 지정 기호

  •  특정 commit을 지정할때 사용하는 기호로써 '~(틸트, 물결기호)' 및 '^(캐럿, 삽입기호)'가 있다.
  • '~(틸트)' 기호와 숫자를 HEAD뒤에 붙여 몇 세대 앞의 커밋을 가리킬 수 있다. ex) HEAD~2 (2세대 이전 커밋)
  • '^(캐럿)' 기호와 숫자를 함께 사용하면 브랜치 병합 이전 같은 세대의 commit 중 몇번째 commit인지 지정한다.
  • 바로 이전 commit을 나타내는 기호 : HEAD^, HEAD~, HEAD~1


참고사이트

https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Reset-%EB%AA%85%ED%99%95%ED%9E%88-%EC%95%8C%EA%B3%A0-%EA%B0%80%EA%B8%B0
https://backlog.com/git-tutorial/kr/stepup/stepup1_3.html

반응형

'DevOps > Git' 카테고리의 다른 글

[Git] Git Branch 전략  (0) 2023.07.07