git config [user.email]
이 깃헙 계정이랑 달라서 커밋을 해도 잔디가 심어지지 않아서 git reset —hard [되돌리려는 시점의 commit hash]
을 입력한 뒤, 수정된 소스코드를 git push -f origin main
를 입력하니까 갑자기 푸쉬하려는 커밋이 사라져서 git log
를 해도 기록이 알아볼 수 없었다.
user-MacBookPro toy-projects % git push -f origin main
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/example/toy-projects.git
+ 6b14dc1...263b05c main -> main (forced update)
user-MacBookPro toy-projects % git log
commit 263b05ce265ef789e7493e0d4cd920ca396cb368 (HEAD -> main, origin/main, origin/HEAD)
Author: aaa <aaa@gmail.com>
Date: Sat Dec 9 17:41:32 2023 +0900
[todolist] Vue 프로젝트 개발환경을 설정했습니다
이유는 위와 같은 동작으로 인하여 history가 사라지고 아래 사진과 같이 commit간의 링크가 사라져서 dangling commit, 즉 dead commit이 되어버렸기 때문이다.
그래서 링크를 참고해서 해결했다. 즉, git checkout [commit hash]
로 commit hash주소로 checkout하여 HEAD(해당 브랜치의 마지막 커밋)를 변경해준 다음, git branch [brand_name] -f
branch에 강제로 붙여준다. 그런다음 git checkout [branch_name]
으로 branch에 checkout하고, git push origin refs/heads/[branch_name]:[branch_name]
으로 origin에 push해주면 된다.