
문제
git push를 했을 때 아래와 같이 non-fast-forward 에러가 발생하였습니다.
위의 문제를 해결하려고 구글링으로 여러 가지 방법을 시도해 본 것 같습니다.
1. git pull 후, 다시 push -> 안됨
2. git pull origin main --allow-umrelated-histories -> 아래 에러 발생
위의 에러 해결 방법을 찾던 중 git stash를 하고 git pull을 하라는 말이 있기에 stash가 무슨 의미인지도 모른 채 무작정 진행하였습니다...
그 결과..... 오늘 하루 3시간 동안 작업한 파일이 전부 사라졌습니다.
stash 명령어를 찾아보니 stash는 현재까지 Working Tree에서 작업한 내용을 커밋 하지 않고,
별도의 저장소에 저장하는 명령어로, stash 명령어를 실행하면 Working Tree가 HEAD의 위치로 돌아가 깨끗해진다고 합니다. 네! 오늘 작업한 모든 파일이 깨끗이 사라졌습니다...
시도
처음에는 commit이 된 줄 알고 아래와 같이 복구를 시도하였습니다.
1. git reflog로 commit 목록들을 가져왔습니다.
2. git reset --hard 864f907을 통해 복구를 시도하였습니다.
하지만 작업한 코드는 복구가 안되었고 다른 시점들로도 복구를 진행하였습니다.
모두 실패...
3. git fsck로 복구하기
또 실패...
해결
애초에 commit이 안 되었기 때문에 접근 방식이 잘못되었습니다.
stash 명령어로 삭제한 파일은 아래와 같이 접근하여 해결하였습니다.
1. git stash list 명령어: stash 목록을 확인
stash@{번호}: 커밋 Hash "커밋 메시지"와 같은 형식으로 목록이 나옵니다.
2. git stash apply 명령어: 가장 최근 stash(번호)를 꺼내되 list에서 지우진 않음
해결!
추가 적으로 git stash pop과 git stash drop 명령어 등은 참고 자료에서 자세히 확인할 수 있습니다.
참고자료
[git stash]- 사용법, 로그 안보이게 하기, 삭제한 stash 복구하기
간단하고 유용한 기능! stash 명령은 git status 했을 때 보이는 파일들을 저장하고 치워주는 기능이다 사용 방법 git status의 결과가 아래와 같은 상태일 때 git stash를 하면 Staged, Unstaged 파일들이 사라
velog.io
'트러블슈팅' 카테고리의 다른 글
CRLF, LF? (0) | 2024.03.09 |
---|---|
구글 서비스 버전 충돌 문제 해결하기 (0) | 2024.01.27 |
H2 DB "start_value" 에러 (1) | 2023.11.23 |
Invalid CORS request (403 Forbidden) (0) | 2023.10.11 |
BaseTimeEntity 적용 안됨 (0) | 2023.09.22 |
느리더라도 단단하게 성장하고자 합니다!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!