[Git] git의 기초 - 되돌리기
카테고리: git
태그: git
🎯git reset
이번에는 git reset을 통해 우리가 한 일을 되돌리는 방법을 살펴본다.
git commit –amend
너무 일찍 커밋했거나 어떤 파일을 빼먹었을 때 그리고 커밋 메시지를 잘못 적었을 때 우리는 완료한 커밋을 수정하고 싶을 수도 있다. 이때 다음의 절차에 따라 git commit --amend명령을 활용하여 commit을 재 작성할 수 있다.
- (Optional) 파일 수정 (마지막 커밋 후 수정한 것이 없다면 git commit –amend 명령은 커밋 메시지만 수정한다.)
- git add
- 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옵션과 함께 사용하는 경우 워킹 디렉토리의 파일도 함께 변경하므로 각별히 유의해야한다.
👍 개인 공부 기록용 블로그입니다. 오류나 조언이 있으시면 언제든지 댓글 혹은 메일로 남겨주시면 감사하겠습니다! 😄
댓글남기기