깃크라켄 푸시 오류 분석


스크린샷과 코드를 확인한 결과, 깃크라켄에서 발생한 푸시 오류의 원인과 해결 방법을 알려드리겠습니다.

## 오류 메시지 분석

깃크라켄 화면에 표시된 오류 메시지는 다음과 같습니다:

1. **Remote: origin 오류**:
   ```
   remote: error: GH013: Repository rule violations found for refs/heads/main.
   remote: - GITHUB PUSH PROTECTION
   ```

2. **Push Failed: main 오류**:
   ```
   error: failed to push some refs to 'https://github.com/LDK1009/Supabase-FCM-Push-Notification.git'
   ```

오류 원인

이 오류는 GitHub의 보호 규칙(Protection Rules) 때문에 발생했습니다. 주요 원인은 다음과 같습니다:

1. **GitHub 푸시 보호(Push Protection)**: GitHub 저장소에 민감한 정보(시크릿, 토큰, 키 등)가 포함된 코드를 푸시하려고 할 때 GitHub의 보안 기능이 이를 차단합니다.

2. **시크릿 포함 의심**: 코드에 API 키, 비밀번호, 토큰 등의 민감한 정보가 포함되어 있을 가능성이 높습니다.

## 문제가 될 수 있는 파일들

코드를 검토한 결과, 다음 파일들이 민감한 정보를 포함하고 있을 가능성이 높습니다:

1. **supabase/functions/push/index.ts**:
   - Firebase 서비스 계정 정보
   - Supabase URL 및 서비스 롤 키

2. **src/lib/firebaseConfig.ts** (코드에 표시되지 않았지만 존재할 것으로 추정):
   - Firebase API 키
   - 프로젝트 ID
   - 앱 ID 등

3. **src/lib/supabaseClientConfig.ts**:
   - Supabase URL
   - Anon 키

 

해결 방법


### 1. .gitignore 파일 수정

현재 `.gitignore` 파일에 다음 항목을 추가하세요:

```text:project/supabase/.gitignore
# Firebase
firebase-adminsdk.json
serviceAccount.json

# Environment variables
.env
.env.*
!.env.example

# Supabase
.branches
.temp
.env.local
.env.*.local
```

### 2. 민감한 정보 제거 및 환경 변수 사용

1. **서비스 계정 정보 분리**:
   - Firebase 서비스 계정 정보를 별도의 파일(예: `serviceAccount.json`)로 분리
   - 이 파일을 `.gitignore`에 추가

2. **환경 변수 사용**:
   - 민감한 정보를 코드에서 직접 하드코딩하지 말고 환경 변수로 관리
   - `.env.local` 파일 생성 (이미 `.gitignore`에 포함됨)

### 3. 이미 커밋된 민감한 정보 제거

이미 민감한 정보가 커밋된 경우:

1. **BFG Repo-Cleaner 사용**:
   ```bash
   # BFG 설치 (Java 필요)
   java -jar bfg.jar --replace-text sensitive-data.txt my-repo.git
   ```

2. **git filter-branch 사용**:
   ```bash
   git filter-branch --force --index-filter \
   "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE" \
   --prune-empty --tag-name-filter cat -- --all
   ```

### 4. GitHub 토큰 재설정

민감한 정보가 이미 GitHub에 노출된 경우:
- 관련 API 키, 토큰, 비밀번호 등을 모두 재설정

## 즉시 조치 사항

1. **민감한 정보 확인 및 제거**:
   - `supabase/functions/push/index.ts` 파일에서 하드코딩된 서비스 계정 정보 제거
   - 환경 변수로 대체

2. **.gitignore 업데이트**:
   - 위에서 제안한 내용으로 `.gitignore` 파일 업데이트

3. **환경 변수 파일 생성**:
   ```
   # .env.local 예시
   NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key
   NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_auth_domain
   NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
   NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket
   NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
   NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
   NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
   NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
   ```

이러한 조치를 취한 후 다시 푸시를 시도하면 GitHub 푸시 보호 오류가 해결될 것입니다.