간혹 git
을 활용하다보면 이전에 커밋한 내용에 연장되는 코드들을 추가할 경우가 생긴다.
그럴때 다시 커밋을 하자니 뭔가 이전 커밋의 내용에 추가된 부분이 없어 같은 이름을 쓰고 싶은 경우가 생긴다.
기존에 프레임 워크 내에서 commit
메뉴를 통해 amend
기능을 사용해 보다가 익숙치 않아 몇번 실수하고 터미널에서 사용하기 위해 명령어를 알아보았다.
git commit --amend
를 입력하면 가장 최근 커밋에 현재의 내용을 업데이트하여 커밋한다.
메시지를 바꾸지않고 최근 커밋에 추가하고 싶을 경우에 사용한다.
git commit --amend -m "커밋메시지"
를 사용하면 가장 최근 커밋의 메시지를 바꾸면서 현재 사항을 업데이트하여 커밋한다.
만약 이전 커밋 메시지를 잘못 입력할경우 이 명령어를 사용해서 변경할 수 있다.
보통 git rest --hard
명령어를 잘 사용하지는 않지만 간혹 사용했다가 다시 되돌리지 못해 낭패를 보는 경우가 생긴다. 이럴 경우 더이상 커밋하는것을 멈추고 다음과 같은 방법을 사용하면 reset
이전의 커밋으로 복구가 가능하다.
git reflog
명령어를 사용해 브랜치의 모든 reflog
내역을 확인할 수 있다.
(reflog
: HEAD
의 업데이트 기록)
HEAD ->
가 앞에 있는 HEAD
는 현재 포인터가 가리키고 있는 커밋을 말한다.
HEAD@{0}
이 제일 상단에 위치하며 아래로 갈수록 번호가 높아지고, 이는 점점 오래된 작업으로 내려간다는 것을 의미한다.
따라서 이전의 내용으로 다시 복구하려면 최근의 작업 즉 HEAD@{0}
으로 HEAD
포인터를 옮겨야 한다는 것을 알 수 있다.
git reset --hard HEAD@{n}
을 사용해 포인터를 변경하면 내가 원하는 작업의 위치로 다시 되돌리기가 가능하다.
(n
은 원하는 헤드 번호)
아니 코드짜고 나니까 왜때문에 2시...?