2020. 02. 19
Jaewoo KIM
슬기로운 신입생활 - GIT
슬기로운 신입생활 - GIT
슬기로운 신입생활 - GIT
슬기로운 신입생활 - GIT
Git 내부
저수준 명령어, 직접 커맨드라인에서 실행하기보다 새로운 도구를 만들거나 각자 필요한 스크립트를 작성할 때 사용
사용자용 명령어, add / push/ commit / etc...
Git 내부
key-value storage
Plumbing
Porcelain
Git 내부
Git 내부
40자리의 Hash값으로 파일명이 생성되며 파일내용이 저장됨
내용이 같다면 Blob을 한개만 저장
디렉토리의 내부 파일과 디렉토리 정보를 관리
author, commiter, commit message를 포함
Git 내부
Git 내부
Git 내부
Git 내부
팀 또는 그룹간의 규칙을 정하고 실천해야 한다
프로젝트 관리하기
팀 또는 그룹간의 규칙을 정하고 실천해야 한다
프로젝트 관리하기
팀 또는 그룹간의 규칙을 정하고 실천해야 한다
프로젝트 관리하기
여러 모듈이 존재한다면?
팀 또는 그룹간의 규칙을 정하고 실천해야 한다
프로젝트 관리하기
좋은 커밋 메시지는 패치에 관한 세 가지 질문에 답을 할 수 있어야 한다
프로젝트 관리하기
좋은 커밋 메시지의 목적은 다음과 같다
프로젝트 관리하기
커밋을 할때 최소한 다음과 같은 것들은 지양하도록 한다
프로젝트 관리하기
비트버킷을 활용한 온라인 코드 리뷰 프로세스는 다음과 같다
프로젝트 관리하기
1. feature/{name} 브랜치 생성
2. 기능 개발 완료 후 develop 브랜치로 pull request
3. 리뷰어들의 코드리뷰 진행 및 승인/반려 처리
4. 리뷰 과정이 끝나면 develop에 merge
코드리뷰가 어느순간 부터 병목이 되었다
프로젝트 관리하기
1. feature/{name} 브랜치 생성
2. 기능 개발 완료 후 develop 브랜치로 pull resquest
3. 우선순위가 밀려 멤버들의 코드리뷰 진행이 미뤄짐
5. 멤버들이 승인하지 않았지만 develop에 merge
4. 리뷰 할 피처가 쌓이고 대기 시간이 길어짐
❗️ 일정 지연
코드리뷰 문화가 잘 자리잡히기 위해서는 멤버 모두가 노력해야 된다
프로젝트 관리하기
프로젝트 관리하기
프로젝트 관리하기
1. feature/{name} 브랜치 생성
2. 변경/추가 파일 add & commit
3. 원격지로 부터 fetch
4. 변경사항 merge 또는 rebase
일반적으로 Git을 이용한 기능개발은 다음과 같이 이뤄진다.
5. 원격지로 변경사항 push
프로젝트 관리하기
git checkout -b feature
git commit -am "Add new commit"
develop
feature
프로젝트 관리하기
git fetch
develop
feature
프로젝트 관리하기
git merge remote/develop
develop
feature
프로젝트 관리하기
git push origin feature
git request-pull
develop
프로젝트 관리하기
git fetch
develop
feature
프로젝트 관리하기
git rebase remote/develop
develop
feature
프로젝트 관리하기
git push origin feature
git request-pull
develop
프로젝트 관리하기
1. 디자이너의 결과물을 개발자에게 전달
2. 개발자는 변경된 파일을 붙여넣기
3. Commit & Push
4. 서비스 배포
appendix A: submodule
1. 디자인과 개발에 적용된 버전 차이 발생
2. 프로젝트 진행중 수정이 빈번하다면
불필요한 커밋 발생
appendix A: submodule
appendix A: submodule
appendix B: hooks
appendix B: hooks
커밋에서 변경이 발생한 파일에 대해서 린트 검사
appendix C: git-svn
appendix C: git-svn
Local
Remote
SVN
GIT
git svn dcommit
git svn rebase
git add
git commit
git branch
git stash
...