CLI & Git 기초
CLI와 Git은 “개인 작업”을 “팀이 재현 가능한 작업”으로 바꾸는 최소 도구입니다.학습 목표
- 반복 작업을 터미널 명령으로 자동화할 수 있습니다.
- Git 브랜치/커밋/리뷰 흐름을 안정적으로 운영할 수 있습니다.
- 실험 변경 이력을 재현 가능한 단위로 남길 수 있습니다.
.gitignore를 활용하여 불필요한 파일을 관리할 수 있습니다.
CLI 핵심 습관
- 한 번 실행하고 끝나는 명령보다, 반복 가능한 스크립트를 우선합니다.
- 출력은 파이프(
|)와 리다이렉션(>)으로 조합합니다. - 긴 명령은 쉘 히스토리보다 스크립트 파일로 저장합니다.
자주 쓰는 CLI 명령어
| 목적 | 명령 | 설명 |
|---|---|---|
| 파일 찾기 | find . -name "*.py" | 현재 디렉터리 하위에서 Python 파일 검색 |
| 텍스트 검색 | rg "pattern" --type py | ripgrep으로 빠른 패턴 검색 |
| 디스크 사용량 | du -sh */ | 하위 디렉터리별 용량 확인 |
| 프로세스 확인 | ps aux | rg python | 실행 중인 Python 프로세스 확인 |
| 환경변수 확인 | echo $PATH | 현재 PATH 확인 |
| 파일 비교 | diff file1 file2 | 두 파일의 차이 확인 |
| 압축/해제 | tar -czf archive.tar.gz dir/ | 디렉터리 압축 |
| 원격 복사 | scp file user@host:/path | 서버로 파일 전송 |
Git 기본 워크플로우
브랜치 전략
| 전략 | 브랜치 구성 | 적합 팀 규모 | 특징 |
|---|---|---|---|
| Simple | main + feature/* | 1-3명 | 가장 단순, 빠른 반복 |
| GitHub Flow | main + feature/* + PR | 3-10명 | PR 리뷰 필수, CI 연동 |
| Git Flow | main + develop + feature/* + release/* + hotfix/* | 10명+ | 릴리스 주기가 긴 프로젝트 |
ML 프로젝트는 코드뿐만 아니라 실험 파라미터, 데이터 버전, 모델 산출물까지 관리 범위가 넓습니다.
코드는 Git, 데이터/모델은 DVC 또는 MLflow로 분리 관리하는 것이 일반적입니다.
커밋 품질 기준
- 한 커밋은 한 가지 의도만 담습니다.
- 커밋 메시지에 “무엇”과 “왜”를 포함합니다.
- 대용량 산출물(
.pt,.ckpt,.csv)은 기본적으로 저장소에 올리지 않습니다.
.gitignore 설정
AI/ML 프로젝트에서 반드시 제외해야 할 파일 목록입니다.자주 쓰는 Git 명령어
| 목적 | 명령 | 설명 |
|---|---|---|
| 상태 확인 | git status | 변경/스테이지 상태 확인 |
| 이력 확인 | git log --oneline -n 10 | 최근 10개 커밋 요약 |
| 변경 비교 | git diff | 작업 디렉터리 변경사항 확인 |
| 스테이지 취소 | git restore --staged file | 스테이지에서 제거 |
| 브랜치 목록 | git branch -a | 로컬+원격 브랜치 전체 확인 |
| 원격 동기화 | git fetch --prune | 원격 변경사항 가져오기 |
| 충돌 해결 후 | git add . && git rebase --continue | 리베이스 충돌 해결 계속 |
| 임시 저장 | git stash / git stash pop | 작업 중 변경사항 임시 보관 |
브랜치 전략을 단순하게 시작하는 방법
브랜치 전략을 단순하게 시작하는 방법
초보 팀은
main + feature 브랜치 2단계만으로 시작하세요.
릴리스/핫픽스 브랜치는 팀 규모와 배포 주기가 올라갈 때 추가해도 늦지 않습니다.충돌(merge conflict) 대응 순서
충돌(merge conflict) 대응 순서
- 충돌 파일 확인 → 2) 의도 기준으로 수동 병합 → 3) 테스트 실행 → 4) 병합 커밋. 충돌 자체보다, 병합 후 검증을 생략하는 것이 더 큰 사고 원인입니다.
실험 코드와 문서 커밋을 같이 해야 하는 이유
실험 코드와 문서 커밋을 같이 해야 하는 이유
실험 파라미터만 바꾸고 문서를 안 바꾸면 팀은 결과를 재현할 수 없습니다.
코드, 설정, 실행 방법, 결과 해석을 같은 변경 세트로 관리하세요.
대용량 파일을 Git으로 관리하는 방법
대용량 파일을 Git으로 관리하는 방법
Git LFS(Large File Storage)를 사용하면 대용량 파일을 별도 저장소에 보관하면서
Git 히스토리는 가볍게 유지할 수 있습니다. 단, ML 모델 산출물은
DVC 또는 MLflow Artifacts로 관리하는 것이 더 실용적입니다.
초보자 체크리스트
- 브랜치 이름만 보고 작업 목적을 알 수 있나요?
- 커밋 메시지에 문제 맥락이 포함되어 있나요?
.gitignore에 대용량 파일과 비밀정보가 포함되어 있나요?- 병합 전 최소 테스트를 실행했나요?
- 팀원이 동일 명령으로 재현 가능한가요?

