[Git] git의 기초 - 되돌리기

업데이트:     Updated:

카테고리:

태그:

🎯git reset

이번에는 git reset을 통해 우리가 한 일을 되돌리는 방법을 살펴본다.

git commit –amend

너무 일찍 커밋했거나 어떤 파일을 빼먹었을 때 그리고 커밋 메시지를 잘못 적었을 때 우리는 완료한 커밋을 수정하고 싶을 수도 있다. 이때 다음의 절차에 따라 git commit --amend명령을 활용하여 commit을 재 작성할 수 있다.

  1. (Optional) 파일 수정 (마지막 커밋 후 수정한 것이 없다면 git commit –amend 명령은 커밋 메시지만 수정한다.)
  2. git add
  3. git commit –amend

Note:

1️⃣ git commit --amend 명령을 실행하면 편집기가 실행되면서 이전 커밋 메시지가 자동으로 포함된다. 메시지를 수정하지 않고 그대로 커밋해도 기존의 커밋은 덮어쓰여진다.
2️⃣ --amend 옵션으로 커밋을 고치는 작업은, 추가로 작업한 일이 작다고 하더라도 이전의 커밋을 완전히 새로 고쳐서 새 커밋으로 변경하는 것을 의미한다. 이전의 커밋은 일어나지 않은 일이 되는 것이고 당연히 히스토리에도 남지 않는다.

파일 상태를 Unstage로 변경

파일을 두 개 수정하고서 따로따로 커밋하려고 했지만, 실수로 git add *라고 실행해 버린 경우 두 파일 모두 Staging Area에 들어 간다. 이때 git reset HEAD <file> 명령으로 Staging Area에 들어있는 파일을 Unstaged 상태로 변경할 수 있다.

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

    renamed:    README.md -> README
    modified:   CONTRIBUTING.md

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

    renamed:    README.md -> README

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:   CONTRIBUTING.md

Note:

1️⃣ git reset 명령은 Staging Area와 워킹 디렉토리 사이를 넘나드는 방법을 제공한다. 자세한 내용은 다음 포스팅에서 다루도록 하겠다. 2️⃣ git reset 명령은 매우 위험하다. 특히 --hard 옵션과 함께 사용하는 경우 워킹 디렉토리의 파일도 함께 변경하므로 각별히 유의해야한다.


👍 개인 공부 기록용 블로그입니다. 오류나 조언이 있으시면 언제든지 댓글 혹은 메일로 남겨주시면 감사하겠습니다! 😄

맨 위로 이동하기

git 카테고리 내 다른 글 보러가기

댓글남기기