Git · ChangeSet
Blyck은 버전관리를 두 층으로 제공합니다. Git으로 파일을, ChangeSet으로 Git이 못 보는 것(DB · SSH · 패키지)까지 추적해, 무엇이 바뀌었든 확인하고 되돌릴 수 있습니다.
Ctrl+Shift+H로 변경 이력 창을 열거나, AI 채팅 하단의 📦 ChangeSet 칩을 클릭해도 같은 창이 열립니다.
MinGit 번들 — git 설치가 필요 없습니다
Section titled “MinGit 번들 — git 설치가 필요 없습니다”Windows 빌드에는 MinGit이 내장되어 있습니다. 시스템에 git이 설치되어 있으면 그것을 우선 사용하고, 없으면 번들 MinGit으로 자동 폴백합니다. git을 설치한 적 없는 PC에서도 커밋·푸시·ChangeSet이 전부 동작합니다.
ChangeSet — 모든 변경의 단일 이력
Section titled “ChangeSet — 모든 변경의 단일 이력”프로젝트에서 일어나는 변경이 종류를 가리지 않고 한 곳에 기록됩니다. 잠금이나 체크아웃 절차 없이, 변경이 일어나는 순간 자동으로 들어갑니다. 읽기 전용 작업(SELECT · file_read · ls)은 기록하지 않습니다.
| 종류 | 기록 내용 |
|---|---|
| 파일 | 변경 전/후 내용, 시각, 출처(👤 사람 / ✨ AI) |
| DB DDL | SQL 원문, 자동 생성된 역SQL, 위험도 |
| DB DML | SQL 원문, 영향 행 수, 되돌리기용 사전 백업 행 |
| SSH 실행 | 실행 명령, 서버, 출력 일부, 위험도 |
| 패키지 | 패키지명, 런타임 |
창 열기: Ctrl+Shift+H 또는 AI 채팅 하단 📦 칩. [전체 변경 | 이 작업] 토글로 전체 이력과 현재 채팅 작업 범위를 전환합니다.
ChangeSet 창은 세 탭으로 구성됩니다.
미커밋 파일(git status 기반)과 DB·SSH·패키지 변경(history 기반)을 함께 표시합니다. 항목을 선택해 되돌리기를 실행할 수 있습니다.
- 미커밋 파일 →
git checkout(수정 취소) 또는 신규 파일 삭제 - DB 변경 → 자동 생성된 역SQL 실행
- SSH 변경 → 역명령 추정 가능 시 자동 제시
커밋 이력 탭
Section titled “커밋 이력 탭”git log를 기반으로 커밋 목록을 표시합니다. 항목 클릭 시 해당 커밋의 git show diff를 확인하고, [이 커밋 되돌리기] 버튼으로 git revert를 실행합니다(히스토리 보존, 강제 덮어쓰기 아님).
파일 변경은 git push로, DB 변경은 SQL 마이그레이션 스크립트로 내보냅니다.
- 검증(verify) — WHERE 없는 UPDATE/DELETE, 위험한 DDL(
DROP·NOT NULL추가), 새 함수에 대응하는 테스트 누락 등을 점검합니다. - 내보내기(export) — SQL 마이그레이션 스크립트, PR용 git 명령 묶음, 또는 JSON으로 내보냅니다. 개발 DB에서 작업한 내용을 운영 반영용으로 정리할 때 사용합니다.
이력의 어떤 항목이든 선택해 되돌릴 수 있습니다.
| 종류 | 되돌리기 방식 |
|---|---|
| 파일 | 변경 전 내용으로 복원 |
| DDL | 자동 생성된 역SQL 실행 (CREATE↔DROP, ADD COLUMN↔DROP COLUMN) |
| DML | 실행 직전 백업된 행으로 복원 (1층/2층 백업, 아래 참고) |
| SSH | 역명령 추정 가능 시 자동 제시(mkdir↔rmdir), 불가 시 수동 안내 |
DML 자동 백업 (1층 / 2층)
Section titled “DML 자동 백업 (1층 / 2층)”AI가 DML을 실행하기 전에 자동으로 백업을 생성합니다.
- 1층 — 단일 테이블·WHERE 파싱·PK·≤1,000행인 경우: 변경 전 행 JSON을 이력 DB(
blyck-history.db)의dml_backup에 저장합니다. 되돌리기 시 즉시 복원합니다. - 2층 — 대량·복잡 쿼리·PK 없는 경우: 대상 DB 안에 백업 테이블(
blyck_bak_…)을 생성해 보관합니다. 되돌리기가 완료되면 백업 테이블은 자동 삭제됩니다.
- 실행 전 역작업 미리보기 + 확인 모달 —
DROP/DELETE는 빨간 경고 - 중간 항목을 되돌리면 “이후 N개 변경이 덮어쓰입니다” 경고
- 현재 값이 기록된 값과 다르면(다른 곳에서 또 바뀜) 강제 여부를 다시 확인
- 되돌리기 자체도 새 이력으로 기록됩니다 — 되돌리기의 되돌리기가 가능합니다
이력 보존 정책
Section titled “이력 보존 정책”이력은 %APPDATA%\Blyck\blyck-history.db에 저장됩니다.
| 정책 | 기준 |
|---|---|
| 대상당 최대 보관 | 최근 40개 항목 |
| 자동 정리 주기 | 14일 경과 항목 삭제 |
| DB 크기 상한 | 2 GB |
| 단일 파일 크기 상한 | 1 MB 초과 파일은 기록 제외 |
Git 작업
Section titled “Git 작업”ChangeSet 창의 커밋 이력 탭 또는 명령 팔레트(Ctrl+Shift+P)에서 Git 작업을 실행합니다.
| 작업 | 설명 |
|---|---|
| 체크포인트 | 작업 중간 자동 세이브 포인트를 타임스탬프 커밋으로 생성합니다. 실험 중 언제든 돌아올 수 있습니다. |
| 작업 단위 커밋 | 현재 채팅(작업)에서 발생한 파일·DB·SSH 변경을 모아 한 커밋으로 정리합니다. ✨ 버튼으로 AI 커밋 메시지를 자동 생성합니다. |
| 선택 커밋 / 전체 커밋 | 파일을 골라 커밋하거나 전체를 한 번에 커밋합니다. |
| diff | 워킹 트리, 특정 커밋, 두 커밋 사이, 특정 작업 범위 등 원하는 기준으로 비교합니다. |
| discard | 워킹 트리 변경을 취소합니다. |
| log | 커밋 이력을 조회합니다. |
| push | 현재 브랜치를 원격 저장소에 푸시합니다. |
GitHub 연동
Section titled “GitHub 연동”GitHub OAuth device flow로 로그인합니다. 브라우저에서 코드를 한 번 입력하면 완료되고, 토큰은 OS 자격증명 저장소(safeStorage)에 암호화 보관됩니다.
- 명령 팔레트(
Ctrl+Shift+P) → “GitHub 로그인” 또는 ChangeSet 창 상단 GitHub 버튼 - 브라우저가 열리면 표시된 코드를 입력해 인증합니다
- 완료되면 push/pull 인증이 자동으로 처리됩니다
연동 후 사용 가능한 작업
Section titled “연동 후 사용 가능한 작업”| 작업 | 설명 |
|---|---|
| Publish | 로컬 프로젝트를 GitHub에 새 저장소로 만들어 푸시합니다 |
| Clone | GitHub 저장소를 로컬 폴더로 복제합니다 |
| Link | 기존 로컬 저장소를 GitHub 저장소와 연결합니다 |
연동 후 push/pull 인증은 자동으로 처리됩니다. 토큰은 OS 자격증명 저장소에 암호화되어 저장되므로 매번 로그인할 필요가 없습니다.
- AI 채팅 — AI가 만든 변경도 ChangeSet에 자동 기록됩니다
- 코드 편집기 — 파일 저장 시 변경 이력 기록, 인라인 AI 수정도 추적됩니다
- DB 클라이언트 — DDL/DML 실행 시 역SQL·백업 자동 생성
- 터미널 · SSH · SFTP — SSH 명령 실행 이력 기록
Q. git을 설치하지 않았는데 커밋이 되나요? Windows 빌드에는 MinGit이 번들되어 있어 별도 설치 없이 커밋·푸시가 가능합니다.
Q. AI가 수정한 파일이 ChangeSet에 안 보입니다. AI가 내장 Edit/Write로 변경한 파일은 Blyck의 file_write 경로를 거치지 않아 history에 바로 기록되지 않습니다. 그러나 git이 변경을 인식하므로 변경 탭의 미커밋 파일 목록에는 표시됩니다.
Q. DML을 잘못 실행했는데 되돌릴 수 있나요?
네. DML 실행 전 자동 백업(1층: 이력 DB, 2층: 대상 DB 백업 테이블)이 생성되므로, Ctrl+Shift+H → 해당 항목 → 되돌리기로 복원할 수 있습니다. WHERE 없는 UPDATE/DELETE도 복원됩니다.
Q. 되돌리기를 실수로 했으면 어떻게 하나요?
되돌리기 자체도 새 이력으로 기록됩니다. 다시 Ctrl+Shift+H에서 해당 “되돌리기” 항목을 되돌리면 원래 상태로 복구됩니다.
Q. 커밋 이력에서 특정 커밋을 취소하고 싶습니다.
커밋 이력 탭에서 해당 커밋 클릭 → [이 커밋 되돌리기] 버튼을 누르면 git revert가 실행됩니다. 히스토리가 보존되고 새 revert 커밋이 추가됩니다.
Q. SSH 명령은 왜 되돌리기가 안 되는 경우가 있나요?
역명령을 자동으로 추정할 수 있는 경우(mkdir↔rmdir 등)에만 자동 제시됩니다. 사이드 이펙트가 있는 명령은 수동으로 처리해야 합니다.
Q. GitHub device flow 로그인이 만료되었습니다. 명령 팔레트에서 “GitHub 로그인”을 다시 실행해 재인증하면 됩니다. 이후 push/pull은 다시 자동 처리됩니다.
Q. 이력 DB 파일이 너무 커졌습니다.
%APPDATA%\Blyck\blyck-history.db는 2 GB 상한과 14일 자동 정리 정책으로 관리됩니다. 대용량 파일(1 MB 초과)은 기록에서 제외됩니다. 즉시 정리하려면 앱을 재시작하면 정리 루틴이 실행됩니다.