[Git] git push -f로 commit내역이 사라졌다

선영·2023년 12월 27일
0

Git/Github

목록 보기
8/8
post-thumbnail

🧨 문제


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해주면 된다.

profile
Superduper-India

0개의 댓글