GIT
파일 상태관점
용어설명
Untracked | 버전관리 대상이 아닌 파일상태 |
Unmodifed | 버전관리 대상이나, Git이 인지한 시점에서 수정이 없는 상태 |
Modified | 버전관리 대상이며, Git이 인지한 시점에서 수정이 가해진 상태 |
Staged | 버전관리 대상이며, Git이 인지한 시점에서 수정이 가해지거나 신규로 추가되어 새 버전으로 Commit 대상 |
add | Commit 대상으로 추가 |
저장소 관점
용어설명
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?를 설명