Study Record

[Git&GitHub] git의 3가지 공간과 git rm/mv/restore/reset 본문

Git

[Git&GitHub] git의 3가지 공간과 git rm/mv/restore/reset

초코초코초코 2022. 3. 1. 20:32
728x90

git의 3가지 공간

 

1. Working directory

  • untracked(Add된 적 없는 파일, ignore된 파일) / tracked(Add된 적 있고 변경내용이 있는 파일) 된 파일이 존재한다.

 

2. Staging area

  • Working directory에서 git add 명령어로 Staging area로 이동한다.
  • 커밋을 위한 준비 단계이다.

 

3. Repository

  • Staging area 에서 git commit 명령어로 Repository 로 이동한다.
  • 커밋된 상태이다.

 

파일 삭제와 이동으로 알아보는 git 공간 변화

 

1. 파일 삭제

 

어떤 프로젝트에서 파일을 그냥 삭제한다면 이 변화는 아직 Working directory에 있다.

위의 그림은 tigers.yaml을 수동으로 삭제하고 상태를 보고 add 한 뒤의 상태를 본 모습이다. 보는 바와 수동으로 삭제하는 경우는 아직 Working directory에 들어있는 상태이다. 여기서 git add . 을 수행하면 staging area로 이동되어 빨간색에서 초록색으로 tigers.yaml 글자가 바뀐 것을 볼 수 있다.

 

이제 git rm 명령어를 사용하여 파일을 삭제할 경우이다.

# 파일 삭제
# 형식 : git rm "파일 이름"
git rm tigers.yaml

위의 그림을 보면 git rm 명령어로 파일을 삭제할 경우 바로 staging area에 삭제된 tigers.yaml 파일 정보가 들어있는 것을 알 수 있다.

 

2. 파일 이동

 

어떤 프로젝트에서 파일의 이름을 수동으로 바꾸면 다음과 같은 상태가 된다. (tigers.yaml -> zzamtigers.yaml)

위의 그림을 보면 수동으로 삭제한다면 아직 Working directory에 있는 것을 볼 수 있다.

add 를 한 뒤에 상태를 보면 정상적으로 이름이 변경되었다는 표시가 보이고 staging area에 들어간 것을 볼 수 있다.

 

이제 git mv 명령어를 사용하여 파일의 이름을 바꾼면 다음과 같은 결과가 나온다.

# 형식 : git mv "원본 파일 이름" "변경된 파일 이름"
git mv tigers.yaml zzamtigers.yaml

바로 staging area로 들어간 것을 볼 수 있다.

 

되돌리기! - restore

staging area 에서 내가 다음번에 커밋하고 싶어 Working directory로 되돌리고 싶다면 resotre 명령어를 사용하면 된다.

# staging area -> Working directory 로 되돌리기!
# 형식 : git restore --staged "파일명"
git restore --staged pumas.yaml

# Working directory 에서 수정하기 전 상태로 되돌리기!
# 형식 : git restore "파일명"
git restore pumas.yaml

 

git reset 의 세가지 옵션

--soft     :  Repository -> Staging area

--mixed  :  Repository -> Working directory   [default] 

--hard    :  수정 사항 완전 삭제 

728x90