TIL - git reset

이동근·2021년 3월 1일
0

gti github

목록 보기
2/2

django를 공부하고, 1차 프로젝트 동안 git을 사용해서 협업을 진행하는 내가 생각하는 백엔드 개발자는 '과감하게 밀어버릴 수 있는 결단'이 중요하다. 너무 꼬여서 풀릴 수가 없는 경우에는 아예 밀어버리는 것도 좋은 방법이기 때문이다. 그래서 우리는 언제든지 밀어도 괜찮도록 복구할 수 있는 방법을 알아야 한다.

첫 번째로 git reset 이 있다.

우선 git reset을 알기 위해서는 git이 가지고 있는 3개의 공간을 알아야 한다.

git의 3가지 공간

우선 git에는 'working directory', 'staging area', 'repository'가 있다.

1. working directory

우리가 작업하는 공간을 의미한다.

2. staging area

'git add' 를 했을 때 나타나는 장소로 보통 'git status' 로 확인할 수 있다.

여기가 staging area이다.

3. repository

commit을 한 공간

git reset

reset은 말 그대로 되돌리다. 초기화 하다가 있다.
git에서 reset의 의미는 HEAD가 과거의 commit을 가리키게 할 수 있다. working directory의 내용도 과거 커밋의 모습으로 돌아가게 한다.

즉. git reset을 통해 과거 커밋으로 아예 돌아가고 싶을때 사용한다. 돌아가서 작업하면 된다.

git reset의 속성!!

git reset에는 3가지의 속성이 있다. --hard, --mixed, --soft
각 속성마다 git이 가지고 있는 공간을 reset을 할지 안 할지 선택한다고 보면 된다.

1. git reset --hard

  • working directory 선택한 commit으로 바뀜
  • staging area 선택한 commit으로 바뀜
  • repository 선택한 commit으로 바뀜

1. caculator.py 여기서 factorial을 삭제 후 add 와 commit

add 하고 commit 하기

commit history

내가 factorial function을 지운고 commit이 완료 되었다. 그리고 그 전단계로 돌아가기 위해서 git reset --hard [commit 아이디]를 사용!!


git rest --hard를 사용했다.

결과
repository - reset 완료

working directory - reset 완료

staging area - reset 완료

이런식으로 --hard를 사용하면 3장소 모두 reset이 가능하다.

2. git reset --mixed


다시 working directory를 지우고 commit 후 reset--mixed

..?? 먼가 생겼다.

결과
repository - reset 완료

staging area - resest 완료

staging area도 reset 완료!!

working directory - reset x

현재 작업을 하던 working direcrtory에는 돌아오지 않는다.

reset --mixed 하면 working directory를 제외한 staging area, repository 모두 reset이 된다.

3. git reset --soft

다시 지우고!!

이번에는 reset --soft로!!

결과
repository - reset 완료

staging area - reset x

add 를 한 상태이다 reset이 되지 않는다.

working directory - reset x

작업을 했던 working directory도 돌아오지 않는다.

repository만 reset이 되도 다른 장소들은 돌아오지 않는다.

결과

git reset을 사용해서 hard, mixed, soft 속성을 사용해서 reset의 단계를 정해서 할 수 있다.

profile
하루하루 1cm 자라는 개발자

0개의 댓글