[Git] 파일 상태를 Staged 에서 Unstaged로 변경하기
파일 상태를 Staged 에서 Unstaged로 변경하기
Staging Area는 커밋대상 파일들의 목록으로 담아두는 공간인데, git add 명령을 사용하여 등록합니다. 그런데 다음 커밋에 반영하려던 파일을 실수로 git add 해버리는 경우가 있을 수 있습니다. 이상태에서 git commit을 해버리면 그대로 해당 파일이 Git 저장소에 반영되어 버릴 것입니다.
이런 경우 Staging Area에 등록했던 파일을 워킹디렉터리로 되돌리는 방법이 있는데, git reset HEAD <파일> 명령을 사용하는 것입니다.
다음의 예제를 보면 aa 파일과 bb 파일이 있는데 aa파일은 다음 커밋에 반영하고 이번 커밋에는 bb파일만 반영하려 했습니다만 git add * 명령을 통해 실수로 두 개의 파일 모두를 Staging Area에 등록해 버렸습니다. git status로 상태를 보니 역시나 두 파일 모두 커밋 대상으로 Staged 되었습니다.
$ git add *
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: aa
modified: bb
그리고 친절하게도 도움말 아래 되돌리는 방법을 설명해 두었네요. aa 파일은 다음 커밋에 반영할 것이므로 워킹디렉터리로 되돌려 봅니다. git reset HEAD aa 명령으로 aa파일을 Staging Area에서 다시 빼내었습니다.
$ git reset HEAD aa
Unstaged changes after reset:
M aa
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: bb
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: aa
git reset 명령어는 매우 위험한데, --hard 옵션과 사용하면 더욱 위험합니다. 그러나 옵션 없이 사용하는 경우 워킹 디렉터리의 작업 파일은 변경되지 않습니다. git reset 명령어는 다음에 더욱 자세히 알아보도록 하겠습니다.
출처 - https://git-scm.com/book/en/v2/Git-Basics-Undoing-Things
'깃(Git)' 카테고리의 다른 글
| [Git] GitHub란? GitHub 가입하기 (0) | 2018.05.15 |
|---|---|
| [Git] 파일 수정한 내용 checkout 직후 또는 가장 최근 커밋 직후로 되돌리기 (0) | 2018.05.15 |
| [Git] git commit --amend 커밋 내용 수정하기 (0) | 2018.05.14 |
| [Git] git log 명령어 - 커밋 기록 보기 (0) | 2018.05.14 |
| [Git] git mv 명령으로 파일 이름 변경하기 (0) | 2018.04.26 |
도로락
WriterIT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그