핵심 개념
``# Git 기본 사항
Git은 코드와 텍스트 파일의 변경 이력을 기록하는 버전 관리 시스템입니다. Snakemake 워크플로(Snakefile)를 작성할 때 Git을 사용하면 과거의 코드로 되돌리거나 다른 사람과 협업하는 작업이 매우 쉬워집니다.
- Repository (저장소): 프로젝트의 전체 이력이 담긴 폴더입니다.
- Commit (커밋): 변경된 내용을 저장소에 영구적으로 기록하는 “스냅샷”입니다.
- Remote (원격): GitHub, GitLab과 같이 인터넷상에 존재하는 저장소 복사본입니다.
기본 워크플로 명령어
# 1. 현재 폴더를 Git 저장소로 초기화
git init
# 2. 변경된 파일을 "스테이징(staging)" 영역에 추가
git add Snakefile config.yaml
# 3. 변경 사항을 메시지와 함께 기록 (커밋)
git commit -m "첫 번째 워크플로 완성"
# 4. 원격 저장소에서 최신 내용 가져오기
git pull origin main
# 5. 내 로컬의 변경 사항을 원격 저장소로 보내기
git push origin main.gitignore 활용하기
프로젝트 폴더 내의 모든 파일을 기록할 필요는 없습니다. 특히 분석 결과물(큰 데이터 파일, 이미지 등)은 저장소 용량을 너무 많이 차지하므로 Git에서 제외하는 것이 좋습니다.
프로젝트 루트에 .gitignore 파일을 만들고 제외할 패턴을 적습니다.
# .gitignore 예시
results/
data/*.fastq.gz
.snakemake/
_book/
이렇게 하면 Snakefile과 설정 파일 같은 “레시피”는 안전하게 기록하면서, 무거운 데이터 파일은 관리 대상에서 제외할 수 있습니다.