본문 바로가기
  • 실행력이 모든걸 결정한다
Git & Github

[Git] 저장 취소(1) - save, git add

by 김코더 김주역 2021. 4. 6.
반응형

지금까지 우리는 디렉토리 내의 변경사항을 원격 저장소에 반영하기 위해 아래 그림과 같이 add, commit, push 명령어를 사용했다.

변경사항을 git에 add하게 되면 .git의 index파일에 저장되는데, 이 공간을 Staging Area라고 한다.

이번 포스팅에서는 git add로 Staging Area에 저장되었던 변경사항을 취소하는 방법에 대해 다룰 것이며, 저장된 파일을 git의 기능을 이용하여 저장전 상태로 return하는 방법까지 추가로 다뤄보고자 한다. 

 

Staging Area ~ Remote Repository간에 commit과 push를 취소하는 방법은 다음 포스팅에서 다룰 것이므로, 지금은 왼쪽 부분에만 집중하자.

 

 

1. save 취소

우리들은 파일 작업을 하고 작업 내용을 유지하기 위해 save를 한다.

git의 기능으로 파일의 저장(save)전 상태로 되돌릴 수도 있다.

위 그림에서는 Working Directory -> Before Save에 해당하는 구간이다.

 

먼저, project1디렉토리의 textfile.txt파일에 "save"를 적고 저장했다. 

 

git status로 상태를 확인해보니 "Changes not staged for commit" 문구와 함께 방금 수정한 textfile.txt파일이 확인되었다. 이 문구는 아직 git add를 하지 않았고 저장만 감지 되었다는 뜻이다.

그래서 commit을 하기 위해 git add 명령을 사용하라는 문구가 나온 것이다.

그런데 그 아래줄에 있는 git restore 명령은 무엇일까? 이 명령이 바로 저장전 상태로 되돌리는 명령이다.

 

저장 전 상태로 되돌리기 위해 다음과 같이 입력했다.

 

그랬더니 빈 파일이 되었다. save라는 문구를 입력하고 저장하기 전이 빈 파일이었기 때문이다.

 

이렇게, 저장 전으로 되돌리는 명령은 git restore말고도 git checkout이 있다.

 

 

2. add 취소

이제는 git add된 내용을 취소해보자.

먼저, 빈 textfile.txt에 "add"를 적고 저장했다.

 

그리고 git add를 해주었다.

 

잘 add되었음을 status 명령으로 확인했다.

 

git add를 취소하는 명령으로 git resetgit checkout head을 소개한다.

git reset과 git checkout head는 Staging Area에 있는 파일을 Working Directory로 내려놓는다는 점은 같은데 차이점이 있다.

git reset은 git add 하기 전의 최종 저장 내용을 유지하지만, git checkout head는 저장 전으로 되돌려버린다.

정말 그런지 아래 결과를 확인해보자.

 

1) git reset에 대한 결과

 

2) git checkout head에 대한 결과

반응형

댓글