본문 바로가기
멋쟁이사자처럼 동아리/Git

섹션 5 세가지 저장공간과 과거로 이동하

by PlusUltraCode 2024. 7. 13.

Git의 스냅샷 방식

기존 델타 방식은 커밋이 많아질수록 새로운 버전으로 이동할 때 많은 커밋을 처음부터 가져와야 하는 불편함이 있었습니다. 반면, 스냅샷 방식은 버전이 늘어날 때마다 최신 상태를 스냅샷으로 저장하기 때문에, pull을 하면 쉽게 최신 상태를 가져올 수 있습니다.

Git의 3가지 공간

  1. Repository: 커밋들이 저장된 공간
  2. Working Directory: 파일들이 수정된 내용이 저장된 공간
    • Untrackedtracked 두 가지 경우가 있다.
    • Tracked는 .gitignore를 통해 관리된다.
  3. Staging Area: 캡슐을 담아 저장된 공간

파일 삭제와 Staging Area

파일을 삭제하고 바로 Staging Area로 보내려면:

 
$ git rm tigers.yaml
 
$ git mv tigers.yaml zzamtigers.yaml

Staging Area에서 Working Directory로 이동

Staging Area에 있는 파일을 다시 Working Directory로 옮기려면:

 
$ git restore --staged pumas.yaml

Working Directory에서 Untracked에 있는 파일을 원래 상태로 복구하려면:

 
$ git restore pumas.yaml

Git의 reset 명령어

  • $ git reset --soft: Repository에서 Staging Area로 이동(add된 상태)
  • $ git reset --mixed: Repository에서 Working Directory로 이동(변경사항만 있음, add되지 않은 상태)
  • $ git reset --hard: 수정사항 완전히 삭제

Git에서 HEAD의 의미

HEAD는 가장 최근에 커밋된 곳을 가리킨다. 즉, 최상단이다.

과거로 돌아가려면:

 
$ git checkout HEAD~

다시 원래 HEAD로 돌아가려면:

 
$ git switch delta-branch

특정 지점으로 이동한 후 reset 하려면:

 
$ git reset HEAD~2

Fetch와 Pull의 차이점

  • fetch: 원격 저장소의 내용을 가져오기만 한다.
  • pull: 가져와서 merge 또는 rebase를 한다.

요약

  • 스냅샷 방식: 최신 상태를 스냅샷으로 저장하여 쉽게 최신 상태를 가져올 수 있다.
  • 3가지 공간: Repository, Working Directory, Staging Area
  • 파일 삭제/변경: git rm, git mv
  • Staging Area 이동: git restore --staged, git restore
  • reset: --soft, --mixed, --hard
  • HEAD: 가장 최근 커밋
  • fetch와 pull: 가져오기만, 가져와서 병