로컬 저장소를 reset 해보겠습니다.
working directory
, staging area
, repository
를 알아보겠습니다.
목차
로컬 저장소
소개로컬 저장소
reset 해보기
로컬 저장소
소개
- reset 하기 전에 로컬 저장소 상태에 관해 알아보겠습니다.
Working Directory
: 파일을 생성할 경우 working directory에 해당합니다.
( reset --hard시 staging Area에 올라 갔다온 tracked file 들이 해당됩니다.)Staging Area
:git add
로 working directory에서 staging area로 올릴 수 있습니다.
git add로 staging area올리고 난 후파일을 수정하면
다시 git add를 해줘야 합니다.Repository
: commit된 것들이 모여있는 곳입니다. push 전 저장소입니다.
로컬 저장소
reset 해보기
Reositoy
( --soft ), Staging Area
( --mixed ) , Working Directory
( --hard ) 순으로 reset 을 진행해보겠습니다.
reset --soft
로 Repository 되돌리기
--soft
옵션으로 Repository
만 reset을 진행하겠습니다.
- 우선
git log --online -2
로 log를 확인해 보겠습니다.
현재 HEAD가d23f7e4
( reset soft test )를 가리키고 있습니다. 바로 아래있는 커밋으로 소스를 되돌리겠습니다. - commit id
a1656d9
로reset --soft
하겠습니다.
$ git reset --soft <Commint Id>
- reset 후 다시 git log를 확인해보겠습니다.
HEAD가a1656d9
로 돌아왔네요.
--soft
옵션을 사용하면Stage Area와 Working Directory
의 소스가 되돌려지지 않습니다.
reset --mixed
로 Repository, Staging Area 되돌리기
--mixed
옵션으로 Repository와 Stage Area
를 reset하겠습니다.
-
git status
로 Staging Area와 working Directory의 상태를 확인해보겠습니다.
초록색이 현재 Staging Area에 올라와 있는 것이고, 빨간색이 Working Directroy에 있는 것 입니다. -
commit id
a1656d9
로reset --mixed
하겠습니다.
git reset --mixed <Commit Id>
Staging Area
까지 reset되었습니다.
git reset --mixed
를 진행 후 초록색으로 표시 되었던 게 사라졌습니다.
reset --hard
로 Repository, Staging Area, Working Directory 되돌리기
--hard
옵션으로 Repository, Stage Area와 Working Directory
로컬 저장소 전체를 reset하겠습니다.
--mixed
에서 reset이 Staging Area까지 되었는데 --hard로 git status에 빨갛게 표시되던 것 까지 reset하겠습니다.
git status
로--mixed
로 reset되지 않은 것들 확인해보겠습니다.
- commit id
a1656d9
로reset --hard
하겠습니다.
git reset --hard <Commit Id>
Working Directory
까지 reset되었습니다.
git reset --hard
를 진행 후 빨간색으로 표시 되었던 것까지 사라졌습니다.
근데 --hard
적용 기준이 tracked된 파일
만 리셋 대상에 포함됩니다.
파일을 새로 만들고 reset --hard를 해보았습니다.
- 파일 생성 후 바로
reset --hard
합니다.
git status
로 확인 결과, 파일 생성 후 git add 하지 않아Untracked files
들은 reset되지 않습니다.
마치며
로컬 저장소 안에서 3가지 저장소를 알아보았습니다.
마지막으로 Working Directory에서 파일을 새로 생성한 경우에는 --hard
의 reset 대상이 아니라는 것을 포스팅 테스트 하면서 알게 되었네요… Staging Area 와 Working Directroy의 경계에 대해 좀 더 명확하게 알면 좋을 것 같습니다!
파일을 생성하면 untracked file이고, git add를 하면 staging Area로 올라가면서 tracked file이 됩니다.
그리고 staging Area에 있는 파일을 수정하면 Working Directory로 내려오면서 modified file이 됩니다.
modified file된 파일을 다시 git add 하면 staging Area에 modified file로 올라오게 됩니다.
reset --hard
는 staging Area에서 Working Directory로 내려온 modified file까지 적용됩니다.
reset --mixed
는 Staging Area로 올라온 modified file, tracked file까지 적용됩니다.
reset --soft
는 staging Area에서 commit 된 파일들만 적용됩니다.
'도구 > Git' 카테고리의 다른 글
깃 Git Push 알아보기 (0) | 2023.10.21 |
---|---|
Git Push 되돌리기 - reset, revert 비교 (1) | 2023.10.19 |
깃 Git orgin 이름 변경하기 - git remote rename (0) | 2023.10.16 |
깃 Git log 확인하기 - HEAD, origin, master (0) | 2023.10.15 |
로컬 레포를 원격 레포에 연결하기 - remote (0) | 2023.10.01 |