본문 바로가기

KnowledgeBase

VCS - Version Control System

GIT

파일 상태관점

Git 파일상태 관점

용어설명

Untracked 버전관리 대상이 아닌 파일상태
Unmodifed 버전관리 대상이나, Git이 인지한 시점에서 수정이 없는 상태
Modified 버전관리 대상이며, Git이 인지한 시점에서 수정이 가해진 상태
Staged 버전관리 대상이며, Git이 인지한 시점에서 수정이 가해지거나 신규로 추가되어 새 버전으로 Commit 대상
add Commit 대상으로 추가

 

저장소 관점

Git 저장소 관점

용어설명

workspace 작업공간
staging commit(Snapshot) 할 대상 파일들의 묶음 공간
Local Repository 로컬 commit 저장소
Remote Repository 원격 commit 저장소
add/mv/rm commit 대상으로 추가/삭제 등
commit staging된 파일들의 Snapshot 저장 (버전올림)
push 로컬 저장소 -> 원격 저장소
clone 모든 브랜치 : 원격 저장소 -> 로컬저장소
pull 특정 브랜치 : 원격 저장소 -> 로컬저장소
Fork 원격저장소 -> 다른 원격저장소
Branch 현재 작업 줄기의 최신 Commit 포인터
Checkout 원하는 Commit으로 브랜치 이동
Head 현재 작업중인 Commit의 포인터
Fetch 원격 저장소에서 그래프 정보 및 Commit 히스트로 업데이트 (실제 파일 업데이트 안함)
Conflict 파일의 동일한 부분에서 서로 다른 변경사항이 있을 경우
Tag 브랜치 주석
Cherry-pick [commit] A브랜치에 커밋해야 하는데 B브랜치에 커밋한 경우, 해당 커밋을 A 브랜치에 이어 붙임
a - b - c - d [A]
       #
          e - f - g [B]
git checkout A
git chrry-pick f
a - b - c - d - f [A]
            #
              e - f - g [B]
   

Branch 규칙
1. [master] 브랜치에는 직접 커밋하지 않고 병합만 한다.
2. 기능 개발은 [master]에서 새로운 브랜치를 만들어서 시작
3. 브랜치 이름은 [feature/기능이름] 패턴으로 하고 한명만 커밋
    feat 새로운기능 추가, fix 버그수정, docs 문서수정, style 코드포맷팅, refactor 코드 리팩터링
    test 테스트 코드 추가, chore 빌드 업무 수정
4. [master] 브랜치는 통합 Test 서버로 자동 빌드 구성
5. [latest] 브랜치는 버전 릴리즈
6. 새로운 기능 추가 [feature/이름], 버그수정 [bugFix/이름]

Commit 메시지 규칙
1. 제목과 본문을 빈 줄로 분리
2. 제목은 40자 이내
3. 제목을 영어로 쓸 경우 첫 글자는 대문자
4. 제목에는 마침표 없음
5. 제목을 영어로 쓸 경우 동사원형으로 시작
6. 본문은 72자 단위로 줄바꿈
7. How 보다는 What, Why?를 설명