코딩/Git

[GIT] ignore한 파일인데, git pull 에러를 뱉는다. fatal: could not reset index file to revision 'origin/main'.

카슈밀 2022. 2. 28. 17:02
반응형

이전 포스팅에서 git에 파일을 무시하거나 이미 올려놓고 그 이후 변경을 감지 못하게 하는 것에 대하여 posting했었다.

 

그런데, 이때 나는 이것이 로컬에서만 자유자재로 변경되는 것을 가정한 상태로 적용했던 것인데,

git pull 시 remote랑 local에서 다르니 Git이 오류를 뱉는다. (뭐야 왜 안되요? 로컬 달라도 그냥 붙어야 하는거 아니냐? 컨플릭은 되도 그냥 로컬의 변화를 안보고 덮어쓰길 기대하는건데, 왜...안됨?)

fatal: could not reset index file to revision 'origin/main'.

 

위 경우 변경을 감지못하는 파일이 바뀌는 바람에 로컬파일을 덮어쓰기 실패하면서 나오는 오류다.

이럴 경우 진짜 git reset --hard을 해도 안먹힌다.

겨우 찾았는데, 하단의 3번째까지 진행하고,  4번째를 진행하여 해당 오류(덮어쓰기)를 해결했다.

물론 git main 브랜치에서 작업하여 작업한 브랜치는 보존하고 말이다.

 

++ 만약 이를 시행했는데도 안된다면, 이전 포스팅에 썼던 skip--worktree 파일이 문제를 일으키고 있는 것이다.
이것을 임시로 풀어주고 다시 pull 하면 정상 작동된다.

$ git gc

$ git reset

$ git reset --hard <target_branch>

git fetch --all 

git reset --hard origin/main 
// or
git reset --hard origin/master

git pull origin main

 

https://stackoverflow.com/questions/38536896/git-reset-hard-origin-master-failing

 

git reset --hard origin/master failing

Trying to discard changes on server, and make it exactly the same as origin/master: git fetch --all git reset --hard origin/master I've done this before on same repo without problems, but this ti...

stackoverflow.com

 

728x90