django를 공부하고, 1차 프로젝트 동안 git을 사용해서 협업을 진행하는 내가 생각하는 백엔드 개발자는 '과감하게 밀어버릴 수 있는 결단'이 중요하다. 너무 꼬여서 풀릴 수가 없는 경우에는 아예 밀어버리는 것도 좋은 방법이기 때문이다. 그래서 우리는 언제든지 밀어도 괜찮도록 복구할 수 있는 방법을 알아야 한다.
첫 번째로 git reset 이 있다.
우선 git reset을 알기 위해서는 git이 가지고 있는 3개의 공간을 알아야 한다.
우선 git에는 'working directory', 'staging area', 'repository'가 있다.
우리가 작업하는 공간을 의미한다.
'git add' 를 했을 때 나타나는 장소로 보통 'git status' 로 확인할 수 있다.
여기가 staging area이다.
commit을 한 공간
reset은 말 그대로 되돌리다. 초기화 하다가 있다.
git에서 reset의 의미는 HEAD가 과거의 commit을 가리키게 할 수 있다. working directory의 내용도 과거 커밋의 모습으로 돌아가게 한다.
즉. git reset을 통해 과거 커밋으로 아예 돌아가고 싶을때 사용한다. 돌아가서 작업하면 된다.
git reset에는 3가지의 속성이 있다. --hard, --mixed, --soft
각 속성마다 git이 가지고 있는 공간을 reset을 할지 안 할지 선택한다고 보면 된다.
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이 가능하다.
다시 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이 된다.
다시 지우고!!
이번에는 reset --soft로!!
결과
repository - reset 완료
staging area - reset x
add 를 한 상태이다 reset이 되지 않는다.
working directory - reset x
작업을 했던 working directory도 돌아오지 않는다.
repository만 reset이 되도 다른 장소들은 돌아오지 않는다.
git reset을 사용해서 hard, mixed, soft 속성을 사용해서 reset의 단계를 정해서 할 수 있다.