Git의 파일에는 Lifecycle이 존재합니다. Unmodified를 Modified로 변경하려면 파일을 수정하면 되고, Modified를 Staged로 변경하려면 git add하면 됩니다. 여기선 그 역방향으로 파일의 Lifecycle을 변경해 보도록 합시다.

Staged 파일을 Modified(Unstaged)로 변경하기

Working tree에서 Staging area(index)로 파일의 상태를 기록(staging)하기 위해 add를 사용했습니다. 현재 작업 트리의 상태를 보여주는 git status를 사용하면, 아래와 같이 출력될 것입니다.

> git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   Will_commit.txt
        modified:   Dont_commit.txt

git reset HEAD <file>...이라는 문장을 볼 수 있습니다. 실제로 이 명령어를 이용해 파일을 Unstaged 상태로 변경할 수 있습니다. Dont_commit.txt 파일을 Unstaged 상태로 변경해 보겠습니다.

$ git reset HEAD Dont_commit.txt
Unstaged changes after reset:
M       Dont_commit.txt
$
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   Will_commit.txt

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:   Dont_commit.txt

Modified 파일을 Unmodified로 변경하기

수정된 파일을 수정 전으로 되돌릴 수도 있습니다. 여기서도 git status 명령이 친절하게 알려줍니다.

$ git status
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:   Dont_modify.txt

git checkout -- <file>...을 사용하라고 합니다. 알려주는 대로 한 번 해 봅시다.

$ git checkout -- Dont_modify.txt
$ git status
nothing to commit (create/copy files and use "git add" to track)

수정 전으로 돌아갔습니다. 그러나 수정했던 내용은 전부 사라지므로, 조심해서 사용해야 합니다.

'Git 레거시 글' 카테고리의 다른 글

[Git] 커밋 되돌리기  (0) 2018.05.28
[Git] 다시 커밋하기  (0) 2018.05.27
[Git] 브랜칭 기법  (0) 2018.05.25
[Git] 브랜치와 Merge  (0) 2018.05.24
[Git] Pull에서 충돌 해결하기  (1) 2018.05.23

+ Recent posts