Local Repository에서 작업하다 수정사항을 이전 단계로 돌려야 하는 경우 일일이 수정사항을 찾아서 되돌리기는 시간이 많이 소요됩니다. 수정 사항을 되돌리는 작업은 2가지 단계로 나눌 수 있습니다.
- Commit 하기 이전 단계에서 수정사항 되돌리기
- Commit한 후 이전 단계로 되돌리기
Commit 전 수정사항 되돌리기
작업을 하면서 이미 commit이 되어 있는 파일을 수정(Modification)하는 경우 Changes not staged for commit 이란 항목으로 출력되고, 새로 생성한 파일은 Untracked files 항목에 표시됩니다.
- 아래에서 Header.jsx파일은 Git에 이미 올라간 파일이며, 수정되었습니다.
- NewFolder는 아예 새로 생성된 폴더 입니다.
Git에 이미 올라가있고, modified 된 파일의 수정사항을 되돌리기 위해서는 restore 명령어를 사용합니다.
$ git restore <파일명>
최상위 디렉토리에서 해당 명령어를 입력하면 git resotre . 만 입력해도 정상적으로 수정사항이 되돌려 집니다.
새로 만든 파일 혹은 폴더를 되돌리기 위해서는 git clean 명령어를 사용합니다. 생성된 파일/폴더를 되돌리는 명령어기 때문에 -f (강제) 옵션을 줍니다.
$ git clean -f <파일명>
최상위 디렉토리에서 입력하는 경우 git clean -f . 만 입력해도 정상 작동 합니다.
Commit 후 수정사항 되돌리기
이미 Commit이 된 경우라면 Staging Area에 수정사항이 반영이 되어 있는 상태입니다.
이 경우 Remote Repository에 push만 하면 되는 상황입니다.
Staging Area에 올라간 수정사항을 먼저 Local로 다시 가져와야 합니다. 즉 Untracked 상태로 되돌려야 합니다. 이 때 사용하는 명령어가 git reset 명령어 입니다.
예를 들어 파일을 하나 생성한 후 commit 해보겠습니다.
import React from 'react'
export default function NewComponent() {
return (
<div>NewComponent</div>
)
}
이제 git status 명령어를 찍어보면 수정 사항이 Untracked files에 등장합니다.
git add => git commit을 하여 Staging Area에 commit 합니다.
git add
git commit
commit 까지 완료하니 working tree가 clean 상태로 변합니다.
여기서 git log를 찍어봅니다.
현재 HEAD 포인터가 가리키고 있는 commit이 바로 방금전 올린 commit 입니다. 해당 commit을 Unstaged 상태로 변경해야 하므로 reset 명령어를 사용합니다.
$ git reset HEAD^
다시 git log를 찍어보면 HEAD 포인터가 이동되었고, 방금전 올린 commit이 사라졌습니다.
이제 git status 명령어를 다시 쳐보면 Untracked 상태로 되돌아 왔습니다. 여기서 git restore을 하거나 git clean으로 변경사항을 되돌려 주면 됩니다.
git restore reset 차이
git restore은 commit하기 전 그러니까, Unstaged 상태에 있는 파일의 수정사항을 되돌리는 명령어 입니다.
git reset은 Staging Area에 올라간 commit을 되돌리는 명령어 입니다.
전자는 파일의 수정사항을 되돌리고, 후자는 commit을 되돌리는 명령어라는 차이점이 있습니다.
'Programming' 카테고리의 다른 글
[IPFS] Infura IPFS deprecated, NFT storage 사용법 (0) | 2022.08.17 |
---|---|
[에러 해결] Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. (1) | 2022.08.16 |
[회고록 ]코드스테이츠 NFT Marketplace 프로젝트 완료 후기 (0) | 2022.08.13 |
IPFS Node.JS에서 사용하기(ipfs-http-client npm) (0) | 2022.08.09 |
우분투 포트 죽이기 (열린 포트 확인하기) (0) | 2022.08.08 |
댓글