[에러 일지] 기존 파일 이름 변경 (확장자 변경) 후, 파일 이름이 바뀐 것으로 인식하지 않고 파일 생성/삭제로 인식하는 현상

uxolrv·2023년 2월 12일
0
post-thumbnail

❗️ 문제 : 기존 js 파일을 tsx로 확장자 변경했을 때, 파일 생성/삭제으로 인식되는 이슈

기존 js파일에 타입스크립트를 적용하기 위해 tsx로 확장자를 변경한 후, 리팩터링를 마치고 PR을 올려보니 기존 파일이 변경된 것으로 인식하지 않는 것을 확인했다.

확장자만 바꿨을 뿐인데 기존 파일을 삭제하고 새로운 파일을 생성되었다고 인식되고 있었다.

다른 팀원 분들도 동일한 방식으로 commit하고 PR을 올리셨는데
내 파일만!! 심지어 전체도 아니고 일부 파일만!! 이런 현상이 발생하고 있었다.

이때문에 File changed 탭에서 변동사항을 확인하기 어려울 뿐만 아니라, 커밋 히스토리까지 날아가버리는 문제가 발생하였다 🥺








💡 원인

https://github.com/orgs/community/discussions/43177#discussioncomment-4585502

한참을 구글링하여 Github Community에서 나와 같은 문제를 겪고 있는 사람을 발견했다!

If a diff is too large, git will detect it as a delete+add instead of a move.
...
If you don't like this, the only option that I know of is to move and edit in 2 different commits.

해당 글에 달린 답변을 보니 git은 diff가 너무 클 경우에 이동이 아닌 삭제+추가로 감지한다는 것을 확인할 수 있었다.
이를 해결하려면 commit을 여러 개로 나누면 된다는 답변을 확인하였다.

질문자가 이에 대한 레퍼런스가 있는 지 물었으나 답변자도 사용하면서 알게 된 정보라고 하였고, 나도 찾아보았지만 정확한 레퍼런스를 찾진 못했다 😢








🔎 시도 (실패)

나도 확장자 변경 후 리팩터링까지 진행하고 한번에 commit했기 때문에, 한 커밋에 변경 사항이 너무 많아 인식이 안되는걸까? 싶어서 commit을 쪼개서 진행해보았다.

1. js ⇒ tsx로 확장자 변경 후 바로 commit
2. 코드 수정 후 commit
3. push

그러나 위와 같은 방식으로 commit을 쪼개어 보았으나 여전히 새로운 파일로 인식이 되고 있었다.

Pull Request에서는 모든 변동사항(commit)을 합쳐 한번에 보여주기 때문에 commit을 쪼개는 것이 효과가 없었던 것 같다.








✨ 해결

commit도 쪼개고, PR도 나눠서 올리는 방식으로 해결하였다.

Github이 같은 파일로 인식하는 변경 사항의 범위를 모르다보니 이 정도까지는 같은 파일로 인식해주겠지? 싶어서 push해보니 또 새로운 파일로 인식해서 다시 reset으로 되돌리고... push --force하고... 그러느라 시간이 꽤 걸렸다.

기존 자바스크립트 프로젝트에 타입스크립트를 적용하면서 리팩터링하다보니 정말 많은 에러를 마주치게 되는 것 같다...
코드 상 에러도 아니고 요런 특이한 에러를 마주치다니... ㅠ
그래도 이런 희귀한 에러를 언제 또 보겠어~ 싶다. 약간 오르비스행 배 안에서 발록 만난 기분 . . .


📌 결론
변경 사항이 많을 경우, github은 파일이름이 변경된 걸 감지하지 못하고 삭제&생성으로 감지한다!
이를 해결하려면 PR을 나눠서 올려야한다!








profile
안녕하세연🙋 프론트엔드 개발자입니다

2개의 댓글

comment-user-thumbnail
2024년 3월 20일

저는 파일 한개인데도 변경으로 감지 안하고 추가/삭제로 감지하네요. 흠

1개의 답글