👉 에러 상황
현재 나는 'Pastar' 이라는 레스토랑 홍보 홈페이지를 제작중에 있는데 GIT으로 관리를 하려다가 데이터를 다 날려먹는 일이 발생했다.
시작한지 얼마 안되어서 코드량이 많지 않았기에 망정이지, 어느정도 진척이 있던 상황이었다면 진짜 꽤나 아찔했을뻔한 일이었다.
(복구를 금방하긴 했다..)
- GIT으로 초기화되지 않은 폴더에서 코드 작업 진행
- 진행 도중 Github에 레포지토리 생성과 동시에 README 파일 생성하면서 initial commit 됌. (<-- 요놈이 충돌 원인)
- 해당 폴더에서 git init 이후, remote add 로 origin 주소 연결 ( 이 시점에서는 난 충돌이 발생할지도, 오류 포인트라는걸 인지조자 못하고 있던 상태) 후 git push origin main 으로 밀어 넣으려 하니 오류 발생
- 오류 메세지를 확인해보니, 로컬 저장소의 데이터와 원격 저장소의 데이터 상태가 상이하여 push를 할수 없으므로, pull을 먼저 진행해달라고 확인되서 git pull 진행. 그러나 역시 오류발생. 오류 메세지로 커밋 이력이 서로 달라 FETCH_HEAD 로 fetch 를 해오고 확인후 merge를 해달라 함
- 난 순간 오류메세지에 당황을 하고 어떻게 해결할지 몰라 인터넷 검색 후, 순조롭게 push를 하려면 강제로 HEAD를 원격저장소의 브랜치로 맞춰주면 된다는 글을 확인하고 'reset --hard' 를 사용
- 그러고 다시 바로 push를 진행하자, 메세지 왈 " 응? 너 밀어넣을 파일 없이 완벽히 일치한 상태인데? "
- 확인해보니 작업한 파일 내역 대.폭.발 💥
❓ 원인
일단 첫 단추가 잘못 끼워졌었다. 시작할때 git 원격저장소와 먼저 출발점을 맞춘 후에 시작을 했어야 했는데, 그러지 않은점.
즉 내가 커밋한 내역과 원격저장소의 초기 커밋 이력이 다르기에 push 자체가 불가능 했고, pull 도 마찬가지 상태.
그 상태에서 reset을 통해 원격저장소에게 맞췄으니 당연히 생성만 하고 아무 작업을 안했던 원격저장소의 파일 상태에 맞춰지며
전체 파일이 날라가는 상황 발생
👉 해결 방책
1. 코드 작업을 시작하기전에 작업을 진행할 폴더를 git과 연결을 '먼저' 해주고 진행
2. 중간에 reset을 사용할게 아니라, FETCH_HEAD 에 있던 파일과 병합
'회고 > Error Handling' 카테고리의 다른 글
Nest.js in Life Cycle (0) | 2023.08.23 |
---|---|
TypeORM + Postgresql Connection Error (0) | 2023.08.17 |
Nest.js Project 생성 오류 해결 (0) | 2023.08.03 |
Sequelize - Transaction Error (0) | 2023.07.31 |