reset
과 revert
가 commit이 이루어진 이후 되돌리기에 주로 사용된다면,
restore
는 주로
- staged가 된 파일을 다시 working directory (or working tree)로 되돌리거나,
- working tree에 이루어진 수정사항을 최근 commit으로 다시 돌리는 등의
commit 이전 (Working tree 와 Stage)에서 되돌리기 에 주로 사용된다.
물론, restore
는 말 그대로 되돌리는 것으로 특정 파일을 특정 commit 시점의 상태로 되돌릴 수도 있다
(이 경우 working directory에 해당 commit의 상태로 되돌림. 때문에 staging과 commit 이 추후 이루어져야 함.)
과거엔
checkout
을 통해 제공되던 기능이었으나,
너무 많은 기능이checkout
에서 집중되어서
branch관련은switch
로, 되돌리기는restore
로 분리됨.
사용법 1 : working directory의 변경사항을 최근 commit 상태 (=HEAD
)로 되돌리기.
git restore <modified\_file>
- 즉, Working directory 에 이루어진 수정사항 (= 아직 commit 이 이루어지지 않은 수정사항)을 최근 commit 된 상태(
HEAD
가 가르키고 있음)로 되돌림. - 이 방법으로 취소된 수정사항은 복원이 불가능 하니 주의해야함.
- 현재 변경된 내용을 날려버리면 안되면서도 현재는 우선 되돌려야 한다면,
stash
로 임시 저장하거나,- 임시로 branch 를 만들어 저장해놓고 restore를 사용해야 함.
사용법 2 : staging이 이루어진 수정 사항을 working tree로 다시 되돌리기 (Unstaging).
git restore --staged <target\_file>
<target_file>
를 Unstage시킴 : unstage
git restore
가 working tree에서의 수정사항( Modified file)을 취소시키는 데 사용된 것처럼,- 현재 stage에서의 수정사항 (stage에 올려졌으나 repository에 올려지지 않은 내용)을 취소시킬 경우,
git restore --staged 대상파일
을 사용.
사용법 3 : 특정 commit 시점의 상태로 특정 파일의 working directory 상태를 변경.
git restore --source=<복원시점_commit_id> <복원대상_file>
<복원시점_commit_id>
는git log
로 확인 가능한 해당 commit의 hashkey임.- e.q.
629d37b107ab9015cbb0fd5812360b376aa5f44f
- 앞의 7자리 정도만 사용해도 됨.
- e.q.
- working tree 에서 해당 파일이 지정한 commit의 상태로 변경됨.
- 때문에 staging과 commit을 수행해줘야 함.
'utils > git and github' 카테고리의 다른 글
[git] git message 확인 방식: pager 사용여부 설정 (0) | 2024.01.30 |
---|---|
[Git] tag: 특정 commit 을 가리키는 별명. (1) | 2024.01.01 |
[Git] log: commit history 살펴보기 (0) | 2023.12.31 |
[git] switch : branch 전환 (0) | 2023.12.31 |
[git] stash : 현재 작업을 임시 저장 (1) | 2023.12.31 |