Git 및 GitHub 워크플로
원격: origin = https://github.com/TTT-b/stremio-ai-translator. 기본 브랜치: main. Windows PowerShell 명령어 사용.
작업 시작
git status -sb및git fetch origin실행.- 작업 트리가 깨끗하면:
git pull --ff-only. 깨끗하지 않으면 중단하고 사용자에게 수정된 내용을 알립니다.
작업 중
- 중요하지 않은 작업은 브랜치를 만들어 진행:
git switch -c <짧은-이름>. 작고 안전한 수정은 사용자가 명시적으로 허락한 경우에만main에 직접 커밋할 수 있습니다. - 작고 집중된 변경 사항을 커밋합니다. 메시지: 릴리스의 경우
vX.Y.Z: 짧은 요약, 그 외에는유형: 짧은 요약(fix:,feat:,docs:,test:,chore:). - 파일을 이름으로 스테이징 (
git add <파일>), 절대git add .또는-A를 무분별하게 사용하지 않습니다. 먼저git diff --staged로 확인합니다. .env,settings.json,data/,logs/,node_modules/,dist-electron/,release/, 토큰, API 키는 절대 커밋하지 않습니다. 시크릿이 커밋된 경우 중단하고 사용자에게 로테이션을 요청합니다.- 모든 커밋 전에
npm run check를 실행합니다. 실패 시 커밋하지 않습니다.
푸시
- 사용자가 요청할 때만 푸시합니다. 일반 푸시:
git push.main에서는 절대--force를 사용하지 않습니다. 개인 브랜치에서 강제 푸시가 정말 필요한 경우--force-with-lease를 사용하고 먼저 허락을 구합니다. - 릴리스:
package.json의version을 업데이트하고, 동작이 변경된 경우 README/TROUBLESHOOTING을 업데이트한 후 커밋합니다. 그런 다음git tag vX.Y.Z로 태그를 만들고, 사용자 확인 후에만git push --follow-tags를 실행합니다. 각 태그는 고유한 커밋을 가리켜야 합니다.
릴리스 확인 (무언가 잘못된 것처럼 보일 때뿐만 아니라 모든 릴리스에서 수행)
npm run check가 통과해야 합니다 (RELEASE_NOTES에package.json의 버전에 대한 he 및 en 노트가 포함되어 있는지 확인하는 테스트를 포함합니다).package.json의 버전이 최신 게시된 태그보다 높아야 합니다 (git tag --sort=-v:refname | Select-Object -First 1). 앱 내 업데이터는 더 높은 버전만 제공합니다.npm run dist로 빌드하고, 사용자가 먼저release/에서 설치하도록 합니다. 게시 전에 사용자의 승인을 기다립니다.- 게시 후
gh release view vX.Y.Z에 설치 프로그램.exe,.blockmap및latest.yml이 나열되어야 합니다.latest.yml이 없으면 앱 내 '업데이트 확인' 기능이 아무것도 찾지 못합니다. - 사용자에게 이전 버전에서 '업데이트 확인'을 누르고 새 버전이 제공되는지 확인하도록 요청합니다.
노트북/휴대폰과 동기화
- 데스크탑이 작업 머신입니다. 사용자가 GitHub가 업데이트되었다고 말하면:
git fetch origin을 실행하고,git log --oneline HEAD..origin/main을 보여준 다음,git pull --ff-only를 실행합니다. fast-forward가 불가능하면 차이점을 보여주고 병합 또는 리베이스 전에 허락을 구합니다.
권장 GitHub 설정 (사용자가 웹 UI에서 설정)
리포지토리 설정 -> 브랜치: main 브랜치 보호 (풀 리퀘스트 필수, 강제 푸시 차단, 삭제 차단). 설정 -> 코드 보안: 푸시 보호가 활성화된 시크릿 스캐닝, Dependabot 알림, Dependabot 보안 업데이트를 활성화합니다. 설정 -> 일반: '헤드 브랜치 자동 삭제'를 활성화합니다. 계정: 2단계 인증을 켭니다.