함께작업할때 실수로 rebase를 안하고 습관처럼 git push -f를 해버려서 동료코드를 날려먹었다 ㅠ..
원복하긴하였으나 내코드가 날라갔다 ㅋㅋ..
로컬에 남아있을거라생각했는데 만약에 git log해도 내가짠 코드가 안보이면..?
git flog를 사용해보자
Git flog란
git에서 로컬저장소의 모든 HEAD 변경이력을 보여준다. 일반적으로 git log는 브랜치의 커밋히스토리만 보여주지만,
reflog는 브랜치이동, 체크아웃, 병합, 리베이스, 커밋 취소등과 같은 모든 HEAD 변경기록을 추적한다. 이 기록은 로컬에서만 유지된다.
git flog를 입력해서 해시코드 목록중에 내 해시코드를 찾았다면?
git checkout {해시코드}로 이동한뒤에 실행해보면 내 코드가 살아있는것을 볼 수 있다.
하지만 커밋내역에는 나타나지않기때문에 새로 브랜치를 파고 메인브랜치에 옮기는 작업이 필요하다.
우선 메인브랜치의 최신내용을 받아오거나 충돌을 해결한다.
1. git rebase 메인브랜치
임시브랜치를 만들고 이동해 커밋푸시를 한다.
2. git checkout -b 임시브랜치
메인브랜치로 이동후에 임시브랜치를 머지한다.
3. git checkout 메인브랜치
4. git merge 임시브랜치
반응형
'Network&etc > Git&Github' 카테고리의 다른 글
[실무] 자주쓰는 git 명령어 모음 (0) | 2023.08.31 |
---|---|
git-credentials으로 서버 permissions 변경 혹은 확인 (0) | 2023.03.09 |
sh파일로 깃명령어 간소화 (0) | 2022.07.22 |
[git] remote: HTTP Basic: Access denied 해결 (0) | 2022.07.16 |
git discard 복구하기 (0) | 2022.07.04 |