gitmacOSAndroid시크릿관리개발환경

맥북 바꿀 때 진짜 챙겨야 할 건 코드가 아니라 키값이다

June 22, 20261 min read

새 맥북을 받았다. 신난다. "코드는 다 GitHub에 있으니까 git clone만 하면 끝이지" 하고 가볍게 생각했다.

그런데 막상 옮기고 나니 앱 릴리스 빌드가 안 됐다. 서명키가 없어서다. 알고 보니 그 키 파일은 .gitignore에 걸려 있어서 clone으로는 절대 안 따라오는 파일이었다.

개발 환경을 옮길 때 진짜 위험한 건 코드가 아니다. git에 안 올라가는 것들이다. 이번에 직접 겪으면서 정리한, "이건 꼭 따로 챙겨야 한다"는 목록을 공유한다.

핵심 원칙: "git에 있는 것 vs 없는 것"으로 나눠라

옮길 대상을 딱 두 분류로 나누면 머리가 정리된다.

분류예시옮기는 법
git에 있는 것소스코드, 커밋된 설정 파일git clone 하면 끝
git에 없는 것서명키, .env, 인증 정보수동으로 챙겨야 함 ← 여기가 함정

clone만 믿고 있다가 사고 나는 건 전부 아래쪽이다. 하나씩 보자.

Step 1. 제일 위험한 것 — Android 릴리스 서명키

결론부터 말하면 이게 제일 위험하다. 잃어버리면 구글도 복구해주지 않는다.

Android 앱을 Play Store에 올리려면 릴리스 키(.jks 또는 .keystore)로 서명해야 한다. 그런데 이 키는 보안상 거의 항상 .gitignore에 등록돼 있다. 즉 git 저장소에 없다. 직접 확인해보자.

# 이 키가 git에 추적되는지 확인
git check-ignore android/app/내릴리스키.jks
# → 경로가 출력되면 = gitignore됨 = clone으로 안 따라옴!

git ls-files android/app/내릴리스키.jks
# → 아무것도 안 나오면 = git에 없음 = 수동 백업 필수

내 경우 check-ignore에 경로가 그대로 찍혔다. clone 방식으로 옮겼다면 이 키를 통째로 날릴 뻔했다.

키만 챙기면 안 된다 — 비밀번호도 세트다

키스토어 파일만 있고 서명 비밀번호를 모르면 그 키는 무용지물이다. 비밀번호는 보통 build.gradle이나 gradle.properties에 들어 있다.

// android/app/build.gradle
signingConfigs {
    release {
        storeFile file('내릴리스키.jks')
        storePassword "..."   // ← 이것도 같이 백업해야 함
        keyAlias "..."
        keyPassword "..."     // ← 이것도
    }
}

그래서 백업할 때는 키 파일 + 비밀번호가 든 설정 파일을 한 세트로 묶었다.

BK=~/Desktop/release-keys-backup
mkdir -p "$BK"
cp android/app/내릴리스키.jks       "$BK/"
cp android/app/build.gradle         "$BK/"   # 비밀번호 포함
cp android/gradle.properties        "$BK/"

⚠️ 서명키는 분실 대비해 2벌 이상 두는 게 정석이다. 맥북 1대 + 외장 SSD처럼 물리적으로 분리해서 보관하자. 비밀번호가 평문으로 들어 있으니 암호 건 zip이나 1Password 같은 곳에 넣어두면 더 안전하다.

반대로, 백업 안 해도 되는 것

전부 챙기려고 욕심내면 오히려 헷갈린다. 자동으로 재생성되는 건 그냥 버려도 된다.

파일백업?이유
release.jks / .keystore✅ 필수잃으면 복구 불가
~/.android/debug.keystore❌ 불필요첫 빌드 때 자동 생성 (디버그 전용)
~/.android/adbkey❌ 불필요adb 기기 인증키, 재생성됨
~/.android/avd, cache❌ 불필요에뮬레이터·캐시

~/.android/ 폴더는 통째로 안 옮겨도 개발에 지장 없다. 딱 릴리스 서명키만 신경 쓰면 된다.

Step 2. 환경변수 — .env.local

두 번째 함정은 .env 파일이다. 이것도 거의 항상 .gitignore에 들어 있다. API 키, DB 비밀번호, 토큰이 다 여기 있는데 clone하면 빈손으로 시작하게 된다.

# 프로젝트에 숨어 있는 env 파일 찾기
ls -la | grep -E "\.env"
# .env.local, .envrc 등이 보이면 이건 따로 옮겨야 함

내 프로젝트의 .env.local에는 GITHUB_TOKEN, JWT_SECRET, DEEPL_API_KEY 같은 게 들어 있었다. 이게 없으면 앱의 절반이 동작을 안 한다.

.env 파일은 평문 시크릿 덩어리라 전송 경로가 중요하다. AirDrop이나 USB로 직접 옮기고, 메신저·이메일·공개 클라우드는 피하자.

💡 폴더째로 AirDrop하면 .env.local 같은 숨김파일도 같이 따라간다. Finder에서 숨김파일이 안 보이면 Cmd + Shift + . 를 누르면 보인다.

Step 3. git / GitHub 인증 — 복사하지 말고 다시 로그인

여기서 많이 헷갈린다. "git 인증 정보도 파일로 복사해야 하나?" 답은 대부분 아니오다.

macOS에서 git 인증은 파일이 아니라 Keychain(키체인) 에 저장된다. ~/.gitconfig를 열어보면 이렇게 돼 있다.

git config --global --list | grep credential
# credential.helper=osxkeychain   ← 인증은 Keychain에 있다는 뜻

gh CLI 토큰도 마찬가지로 keyring(Keychain)에 들어간다. 그래서 파일을 복사해서 옮기는 것보다, 새 맥북에서 다시 로그인하는 게 더 간단하고 안전하다.

# 새 맥북에서 — git 기본 설정 (3줄이면 끝)
git config --global user.name "내이름"
git config --global user.email "내이메일"

# GitHub 인증은 재로그인 (토큰 새로 발급됨)
gh auth login

정리하면 git 관련은 이렇게 나뉜다.

항목위치옮기는 법
~/.gitconfig (이름·이메일·설정)파일복사 가능, 또는 3줄로 재설정
git/gh 인증 토큰macOS Keychain복사 X → 재로그인
SSH 키 ~/.ssh/id_rsa파일복사하거나 새로 만들어 GitHub에 등록

SSH 키만 실제 파일이라, 복사하든 새로 생성해서 등록하든 선택하면 된다.

자주 쓰는 점검 명령어 모음

옮기기 전에 "뭐가 git에 없는지" 한 번에 훑는 명령어들이다.

# 1. 프로젝트 안 숨은 env 파일 찾기
ls -la | grep -E "\.env"

# 2. 워크스페이스 전체에서 서명키 검색
find ~/workspace -type f \( -name "*.keystore" -o -name "*.jks" \) | grep -v node_modules

# 3. 특정 키가 gitignore됐는지 확인
git check-ignore 경로/내키.jks

# 4. git 인증 방식 확인
git config --global --list | grep credential

트러블슈팅

Q. 폴더를 통째로 AirDrop했는데 너무 느려요. A. 십중팔구 node_modules 때문이다. 보내기 전에 rm -rf node_modules 하고, 새 맥북에서 npm install로 다시 깔면 훨씬 빠르다.

Q. .env.local을 분명히 복사했는데 새 맥북에 안 보여요. A. 숨김파일이라 그렇다. Finder에서 Cmd + Shift + . 로 숨김파일 표시를 켜자.

Q. 서명키 비밀번호를 어디다 적어놨는지 모르겠어요. A. android/app/build.gradle이나 gradle.properties에서 storePassword / keyPassword를 찾아보자. 보통 여기 평문으로 들어 있다.

정리

맥북 교체에서 진짜 챙겨야 할 건 코드가 아니라 git에 안 올라가는 것들이다.

  1. Android 릴리스 서명키 (.jks/.keystore) — gitignore돼서 clone으로 안 따라옴. 키 + 비밀번호 세트로 백업. 잃으면 복구 불가
  2. .env.local — 평문 시크릿. AirDrop/USB로 직접 전송
  3. git/gh 인증 — Keychain에 있으니 복사 말고 재로그인. SSH 키만 파일로 챙기기
  4. ~/.android/debug.keystore 같은 건 백업 불필요 — 자동 재생성됨

clone은 코드만 옮겨준다. 나머지는 직접 챙겨야 한다는 걸 기억하면, 새 맥북에서 "왜 빌드가 안 되지?" 하며 당황할 일이 없다.

PM

backtodev

40대 PM, 다시 개발자로 돌아갑니다. 실패하고 배우며 성장하는 기록.

맥북 바꿀 때 진짜 챙겨야 할 건 코드가 아니라 키값이다 | backtodev