본문 바로가기
Programming

[Git] 되돌리기 명령어 (restore, reset, clean 사용법)

by 개발자 염상진 2022. 8. 14.

Local Repository에서 작업하다 수정사항을 이전 단계로 돌려야 하는 경우 일일이 수정사항을 찾아서 되돌리기는 시간이 많이 소요됩니다. 수정 사항을 되돌리는 작업은 2가지 단계로 나눌 수 있습니다.

 

 

  1.  Commit 하기 이전 단계에서 수정사항 되돌리기
  2.  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을 되돌리는 명령어라는 차이점이 있습니다.

 

 

 

 

 

 

[회고록] 첫번째 프로젝트(Opensea) 시작

첫번째 프로젝트를 진행하게 되었습니다. 목표는 Opensea 클론이고, 모든 기능을 다 넣기에는 시간도 우리의 지식도 부족하므로, 제한적인 기능을 Bare-Minimum으로 두고, 추가 기능은 Advanced, Nightmare

about-tech.tistory.com

 

 

플로이드 워셜 알고리즘 (Floyd-Warshall Algorithm) Node.js

플로이드 알고리즘이란? 플로이드 워셜 알고리즘은 그래프 상에서 가능한 모든 경로의 최단거리를 뽑아내는 문제입니다. 플로이드 워셜 알고리즘의 시간복잡도는 O(V^3)입니다. 그래프 상에서

about-tech.tistory.com

 

 

우분투 포트 죽이기 (열린 포트 확인하기)

프로그램을 만들다 보면 포트가 겹쳐서 적절한 실행이 안되는 경우가 있습니다. 아래 에러가 발생할 때는 해당 포트를 종료해줘야 합니다. Error: serveHTTPGateway: manet.Listen(/ip4/127.0.0.1/tcp/8080) faile..

about-tech.tistory.com

 

댓글