git add ~
git commit -m ~
git push ~ ~
git pull ~ ~
지난 몇년간 여러 프로젝트를 진행하고 가장 지겹도록 많이 친 명령어인거 같다.
오늘 배운건 git과 github들이다.
이 역시 이미 알고 있던 내용들이었지만,
git reset에서 옵션의 종류와
페어 프로그래밍을 하면서 생긴 오류들을 고치는 단계에서 알게된
Detached Head에 관해 기술하고자 하며,이 글에선 reset을 다루려고 한다.
git reset HEAD^ 명령어를 몰랐던것은 아니지만,
^의 의미와 옵션 soft, mixed, hard에 대해 알게되었다.
git reset HEAD^는 내가 위치한 commit에서 첫번째 commit을 되돌린다는 의미로
^의 개수에 따라 몇번째인지 결정된다.
옵션에 대한 설명은 조금더 찾아보면서 공부하였는데,
조금 복잡하긴 하다.
new commit 상태에서 old commit으로 reset했다고 가정했을때,
각 옵션별 상황은 아래와 같다.
위치(?) | soft | mixed | hard |
---|---|---|---|
Repository | old | old | old |
Stage | new | old | old |
Working Directory | new | new | old |
Repository는 실제 저장 공간,
Stage는 임시 저장 공간(add 이후 & commit 전),
Working Directory는 작업 공간
그리고 각 commit 별로 f.md의 내용은 아래와 같다.
123
123
456
789
soft 옵션 적용 직후 status
untracked 파일은 존재하지 않으며, commit해야함
이 때 f.md는 new의 것과 같은 상태
mixed 옵션을 적용시,
위와 같이 f.md 파일이 unstaged 되었다고 알려주며
이 때 status
역시 해당 파일은 untracked files 리스트에 존재
하지만, f.md는 new의 것과 같은 상태
hard 옵션 적용시
다른 옵션과 달리 HEAD의 위치를 알려주었고,
status
아무 변경사항이 없다고 뜨지만,
f.md는 old의 것과 같은 상태
다시 정리하자면,
soft는 commit을 하기 전으로,
mixed는 add 하기 전으로,
hard는 완전하게 해당 시점으로 옮기는걸 뜻한다.