📌HEAD란?
$ git log를 찍어보면 HEAD라는 글자가 찍혀있다.
모든 브랜치에는 HEAD가 존재하는데 이는 해당 브랜치의 마지막 커밋을 뜻한다!
➡ 커밋 취소하기
1️⃣ git reset --hard
: --hard 옵션은 현재 HEAD에서 추가된 변경사항들을 모두 되돌려준다.
현재 작업 위치에서 특정 위치로 변경 가능하다!
ex) 방금 전 커밋한 부분을 취소 하고 싶다?
➡ git reset --hard or git reset 커밋ID --hard
👉 --hard 옵션을 사용할 때 착각할 수 있지만 아예 Git 저장소에서 관리 하지 않는 파일들(Untracked files)을 추가한 경우,
이 파일들은 reset 이후에도 그대로 유지됩니다.
이 파일들까지 삭제하고자 하는 경우 git clean 명령어를 따로 실행해야합니다.
✅삭제 대상(Untracked files) 목록 확인
$ git clean -n
✅Untracked files 파일 삭제
$ git clean -f
2️⃣git reset --soft
: --hard 옵션과는 다르게 Head와 Branch는 옮겨져 있으나 status 로 확인해보면
working directory와 staging area에는 reset 내용이 그대로 남아있다.
➡ 커밋을 취소하면서 새로운 버전을 생성
git reset은 HEAD 위치를 바꿔버려서, 로컬 저장소의 상태를 커밋 이전 상태로 강제 변경해버립니다. 하지만 커밋을 협업중인 원격 저장소에 push해버린 경우, 로컬 저장소에서 커밋을 취소해버리면 원격 저장소와 상태가 틀어져버립니다. 특히 원격 저장소에서 force push를 금지하는 경우, 로컬 저장소의 변경사항을 push할 수 없게 되어버립니다. 이런 경우에는 git revert로 특정 커밋의 내용을 되돌리는 커밋을 하는 방법을 사용해야합니다.
출처: https://www.lainyzine.com/ko/article/git-reset-and-git-revert-and-git-commit-amend/
➡ 가장 최근 Git 커밋 메시지 변경
커밋의 메세지 내용을 덮어쓸 때는 git commit의 --amend 옵션을 사용합니다. 수정할 내용을 스테이징에 반영하고 다음 명령어를 실행해줍니다.
$ git commit --amend -m "커밋메세지"
📌커밋을 취소하고 커밋 취소 후 특정 내용으로 되돌리고 커밋 메세지를 다시 수정해서 다시 커밋하기