git을 사용하여 커밋을 수행하였을나 아래와 같은 이유로 git add 이 전의 상태로 되돌려야하는 경우가 있을 수 있죠.

- 서버에 올라가면 안되는 내용이 add 된 경우
- 다른 브랜치에 올렸거나 잘못된 경우

커밋된 내용을 되돌리기 위하여 revert가 필요한 상황입니다. 상태를 되돌리기 위해서 revert 또는 reset 키워드를 사용하여 커밋 이전으로 돌리는 방법에 대하여 알아보도록 합니다.



# git 이미 커밋이 된 경우 커밋 이전으로 되돌리기
이미 commit이 수행된 경우라면? 일단은 커밋 이전으로 돌아가야합니다... 이때 reset 명령어를 사용할 수 있으며 아래의 git의 reset  커맨드를 수행하도록 합니다.
git reset --soft HEAD^

위 커맨드를 수행하고 git status를 수행하면 커밋하기 이전의 내용들이 staged 상태(added)로 보이게 될 것입니다.




# git add 하기 이전의 상태로 되돌리기
이번에는 add 명령어를 사용하기 이전 상태... 즉 각각의 파일들을 staged 상태에서 unstaged 상태로 변경하여보겠습니다. 만약 파일명이 다음과 같다면 아래와 같이 입력합니다.
> git reset filename1.txt
> git reset filename2.txt
> git reset filename3.txt

이제 모든 파일들이 unstaged 상태로 변경되었을 것입니다. 파일을 수정하여 저장하기 이전의 상태로 돌리기 위해서라면? 이때는 다시 checkout 명령어를 사용할 수 있습니다.

checkout은 보통 브랜치를 다른 것으로 변경하는데 사용되나 변경된 파일을 되돌리는데(sync to master)에도 사용할 수 있습니다.


! git checkout 사용하여 수정하기 이전으로 되돌리기
이번 방법은 checkout을 사용하여 파일을 수정하기 이전의 상태.. 즉 초기 버전으로 돌리는 방법입니다.
> git checkout filename1.txt
> git checkout filename2.txt
> git checkout filename3.txt

여기까지 모든 과정이 끝나고 이전의 커밋은 다시 원래 상태로 되돌아가게 됩니다. 이제 잘못된 내용을 수정하거나 원래 의도한 브랜치에서 작업을 시작할 수 있게되었죠.

실수로 특정한 branch에 올라가야하는 내용이 master에 잘못 커밋되면 pull을 사용해 다른 리모트 정보를 가져올때 에러가 발생할 수 있으니 주의가 필요합니다.