깃허브 action 과 로컬에서 파일명 대/소문자 인식에 따른 오류

2025. 8. 20. 11:47문제 해결 및 Tip

문제 정의

  1. 로컬에서 npm run build 를 하여 빌드시 오류를 체크하였으나 문제 없었음.
  2. commit 후 깃허브 레포지토리에 푸시
  3. 깃허브 action 이 실행
  4. 깃허브 quality-check 과정의 아래 빌트테스트에서 오류 발생

 

깃 허브 action 에서의 빌드 테스트 코드

- name: 빌드 테스트
        run: npm run build

 

useInbodMessageStroe.ts 에서 @/mystudymockdata/inboxMessageData 경로의 파일을 불러오려고 하는데 없어서
오류가 났다는 의미

 

 

정보 수집

 

  1. 절대경로 인식오류 인가? (NO!)

            vite.config.ts 파일에 절대경로 설정이 되어 있음

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import tailwindcss from '@tailwindcss/vite'
import path from 'path'

// https://vite.dev/config/
export default defineConfig({
  plugins: [react(), tailwindcss()],
  resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src'), // @를 src로 매핑
    },
  },
})

 

그리고

tsconfig.app.json 에도 설정이 된 상태!

"baseUrl": "src",
    "paths": {
      "@/*": ["*"]
    }

 

디버깅

1. 디버깅 (GitHub Actions 로그 추가)

- name: Print file list
  run: find src/mystudymockdata -type f

 GitHub Actions가 실제로 해당 경로의 파일을 확인 한다.

 

2. 깃허브 에 push를 하여 디버킹 코드를 github action 에서 실행 시켜준다.

 

3. github action 디버깅 출력 결과

실제 파일은 존재 하는 상태 이나

 

✅ 깃허브 액션에서만 파일명 첫글자가 대문자로 인식되는 상황

  1. 깃허브 액션에서 나타나는 파일명 (대문자) : InboxMessageData.ts
  2. Import 해오는 컴포넌트에서 불러오는 코드 (소문자)
import { inboxMockData } from '@/mystudymockdata/inboxMessageData'  // 파일명 첫글자 소문자

   3. 로컬에 저장된 파일명 (소문자): inboxMessageData.ts

 

✅ 정리하자면

  • 로컬에서는 파일명이 inboxMessageData.ts ← 소문자 i
  • 하지만 GitHub Actions(Linux) 환경에서는 InboxMessageData.ts ← **대문자 I*로 인식되고 있음

 

 

🧨 문제점 파악

📍 macOS는 기본적으로 대소문자 구분 안 함 (대부분의 디스크 설정 기준)

→ Inbox.ts와 inbox.ts가 같은 파일로 인식됨

 

🐧 GitHub Actions는 Linux 환경대소문자 엄격히 구분

→ Inbox.ts와 inbox.ts는 완전히 다른 파일

 

  1. 즉 처음에 대문자로 InboxMessageData.ts 파일을 생성하여 커밋 후 깃허브에 올라간 상황!
  2. 이건 컴포넌트가 아니라서 소문자로 파일명 수정 inboxMessageData.ts
  3. 하지만 로컬과 git에서는 파일명 변경을 인식하지 못한 상황에서 커밋 후 push 하였으나,
  4. 이전 파일명 InboxMessageData.ts 로 올라 가게 됨

 

 

조치 방안 작성과 구현

 

1️⃣ 로컬에서 Git이 대소문자 변경을 감지 못하는 문제 해결

Git은 기본적으로 파일명이 대소문자만 바뀌면 변경으로 간주하지 않음

→ 따라서 아래처럼 강제로 rename을 두 번 해야 한다.

 

# 1. 다른 이름으로 변경 (예: 대체 이름)
git mv src/mystudymockdata/inboxMessageData.ts src/mystudymockdata/temp.ts

# 2. 다시 올바른 이름으로 변경 (소문자 i)
git mv src/mystudymockdata/temp.ts src/mystudymockdata/inboxMessageData.ts

# 3. 커밋
git commit -m "Fix casing issue: InboxMessageData.ts → inboxMessageData.ts"

# 4. 푸시
git push

 

이렇게 하면 Git이 정상적으로 파일명을 소문자로 인식하고, GitHub Actions에서도 소문자로 처리됩니다.

 

결과 정리

 

📍 macOS는 기본적으로 대소문자 구분 안 함 (대부분의 디스크 설정 기준)

→ Inbox.ts와 inbox.ts가 같은 파일로 인식됨

 

🐧 GitHub Actions는 Linux 환경대소문자 엄격히 구분

→ Inbox.ts와 inbox.ts는 완전히 다른 파일

 

 

VSCode에서도 casing 감지하도록 설정하기

.git/config에 아래 설정이 있을 수 있음:

 

ignorecase = true

 

 

→ 이것을 false 로 바꾸면 Git이 대소문자 변경도 감지하게 됩니다

git config core.ignorecase false