2. 목차
1. 일반적인 Git 협업 방식의 장단점
2. P스테이지에서 맞는 팀 Repo Git 협업 방식 제안
3. 세팅에 필요한 .gitignore & 유용한 VSCode extension/settings
부스트캠프 AI Tech <Tech Talk>
2/
3. 1. 일반적인 Git 협업 방식의 장단점
부스트캠프 AI Tech <Tech Talk>
3/
4. Git과 Git-flow
• Git은 형상관리도구
• 매 commit마다 현재의 상태를 snapshot으로 찍는다.
• Filename이 아닌 file의 내용(checksum)이 기준이다.
• 어떤 제품을 만들 때, 효과적으로 버전관리를 할 수 있다.
• Git-flow
• 여러 사람이 git으로 협업하는 일반적인 개발 방법론
• 다 같이 만드는 하나의 완성본 만을 담은 develop(또는 master) 브랜치를 공
유하고
• 이 곳에서 branching한 feature, hotfix 등의 브랜치를 각자 작업한다.
부스트캠프 AI Tech <Tech Talk>
4/
7. 2. P스테이지에 맞는
팀 Repo Git 협업 방식 제안
부스트캠프 AI Tech <Tech Talk>
7/
8. P스테이지에서 해야하는 것들
• 각자 모델/파라미터 등을 수정하여 다양한 방법을 실험 & 결과 공유
• 어떤 모델과 어떤 접근법을 썼는지 구두로 전달
• 실험 결과를 wandb등으로 공유
• 자신의 코드를 팀원들과 공유
• 복붙
• Zoom 화면 공유
• VSCode live share
• 최종 팀 코드 하나로 통합
• Git?
부스트캠프 AI Tech <Tech Talk>
8/
9. P스테이지에 Git-flow가 어울릴까?
• Master 브랜치의 완성본 snapshot을 꾸준히 공유한다.
• 각자의 브랜치에서 여러 실험을 해볼 수 있다.
부스트캠프 AI Tech <Tech Talk>
9/
10. P스테이지에 Git-flow가 어울릴까?
• Master 브랜치의 완성본 snapshot을 꾸준히 공유한다.
• P스테이지에선 하나의 완성된 sw를 만드는 것이 아님.
• Master의 snapshot이 가진 모델, 파라미터 등은 모두에게 동일하다.
• 서로 같은 부분을 다르게 수정해서 올리면 merge conflict가 발생할 수 있다.
• 각자의 브랜치에서 여러 실험을 해볼 수 있다.
• 각자 별도의 모듈을 만드는 것이 아님.
• 여러 실험을 해볼 수 있지만… 결국 팀원과 코드를 합치기 위해선
origin/master에 push해야 한다. (merge conflict 발생 확률 ↑)
• 다른 사람의 코드를 참조하려면 해당 branch를 pull하고, checkout하여 확인해
야 한다.
부스트캠프 AI Tech <Tech Talk>
10/
11. 우리 조에서 쓰고 있는 방법
1. 각자의 디렉토리를 유지하고
2. Master 브랜치 하나만 쓰는 방법
부스트캠프 AI Tech <Tech Talk>
11/
12. 1. 각자의 디렉토리를 유지
• Root 디렉토리에 각자의 디렉토리를 생성
• 자신의 실험은 모두 자신의 디렉토리 내에서만 하기
• 서로 같은 파일을 수정할 일이 아예 없음.
• Merge conflict를 사전에 방지
• Root에 있는 각종 파일 등은 변경 시 미리 말해주고
commit하기
• .gitignore, emsemble/ 등
• .bash_history, .profile, .conda 등은 모두 ignore
부스트캠프 AI Tech <Tech Talk>
12/
13. 2. Master 브랜치 하나만 사용
• 각자의 디렉토리 내에서만 작업하기에 브랜칭의
의미가 없음.
• 모든 팀원이 서로 가장 최신의 코드를 공유 가능
(local에서 바로 확인 가능)
• 브랜칭보다 간단한 pull/push
• $ git pull origin master
• $ git push u origin master
• 각자의 커밋은 [name] prefix 붙이기
부스트캠프 AI Tech <Tech Talk>
13/
14. P스테이지에서 해야하는 것들 다시보기
• 각자 모델/파라미터 등을 수정하여 다양한 방법을 실험 & 결과 공유
• 어떻게 수정했었는지, 어떤 실험을 했었는지 commit 기록으로 남길 수 있음.
• 자신의 코드를 팀원들과 공유
• git pull/push로 local에서 바로 코드 확인 가능
• 최종 팀 코드 하나로 통합
• 추후 ensemble하거나 모듈별 분업이 필요할 때 master 브랜치에서 gitflow 등
을 통해 이어서 작업 가능
부스트캠프 AI Tech <Tech Talk>
14/
15. 이 방법을 쓸 때 주의할 점
• 처음 세팅을 잘 하자
• 처음 서버 환경을 디렉토리별 환경으로 나누기 위해 각자 자신의 서버 내용물을
별도 위치에 보관했다가 pull된 자신의 디렉토리에 옮겨야 함. (귀찮음)
• 이미 혼자 local git을 만들어 작업해왔다면 공유되기 어려움.
• 가급적 $git add .를 지양하자
• 실수로 다 같이 공유하는 자신의 디렉토리 밖 수정사항을 commit할 수 있다.
부스트캠프 AI Tech <Tech Talk>
15/
16. 3. 세팅에 필요한 .gitignore
&
유용한 vscode extension
&
유용한 vscode settings
부스트캠프 AI Tech <Tech Talk>
16/
17. .gitignore 템플릿
• Stock template
• VSCode/Pycharm, Python, Venv, Vim, 등…
• 업스테이지 서버 환경 관련
• 잡다한 파일들
• .conda/, .local/, .wget-hsts, 등…
• Credentials
• .git_credentials, .gitconfig
• 데이터셋
• **input/data/data/*
• Pth 파일 등…
• 각자 디렉토리 내에서 무시하고 싶은 것들
• Jaepil/temp/*
부스트캠프 AI Tech <Tech Talk>
17/
18. 유용한 VSCode extensions
• gitignore
• Ignore할 파일들 템플릿 제공
• Git graph
• Commit history를 그래프로 보여줌
• Git Lens
• Git blame을 라인마다 표시
• 그 외에도 아주 많은 다양한 기능
부스트캠프 AI Tech <Tech Talk>
18/
19. 유용한 VSCode settings
• .vscode/settings.json에 추가
• (Pylance 사용시) 분명 같은 디렉토리 내에 있어 다른 py파일이 impor
는 되는데 pylance는 인식을 못한다면?
• 남의 코드는 검색 결과에 표시하고싶지 않다면?
부스트캠프 AI Tech <Tech Talk>
19/