- Git과 GitHub의 차이
- Git의 특징(분산 버전 관리 시스템)
- 충돌 관리
- Repository Workflow
- Convention(협약)
- Management
- Collaboration(협업)
- Pull Request
1. Git과 GitHub의 차이
GitHub는 Git을 활용한 code hosting platform이다.
2. Git의 특징
1. Git
- 분산(Distributed) 버전 관리 시스템
→ 분산이란? = 각각의 컴퓨터에 저장소(Repository)가 분리되어 있다.(commit을 하면 자신의 repository에 쌓이고, push를 하면 remote repository에 올라가는 거!!)
2. 흐름
- Clone 또는 Init
Local Repsitory 생성
- commit
Local repository에 작업이 쌓이는 것
- push(local과 remote sync를 맞추는 것)
Remote repository에 작업이 올라가는 것
- pull(local과 remote sync를 맞추는 것)
Remote repository에서 Local repository로 작업을 가져오는것
3. 충돌 관리
1. 충돌이 발생하는 이유
협업자 간 Git History 불일치
2. 충돌 분석
- 충돌 위치(파일, 라인)
- 충돌 유형(단순 코드 스타일 차이, 로직 변경 또는 리팩터링, 동시 추가)
- 충돌 원인(이력이 틀어진 시점)
3. 하면 안되는 것
- 발생한 충돌을 의논 없이 수정하기(단순 코드 스타일 제외 = 코드 스타일을 정의해놨다는 전제하에는 지워도 됨)
git push --force
(branch랑 commit history가 틀어짐)
4. Repository Workflow
1. Centralized 와 Forking의 차이
(1) Centralized
- "Origin - Local"로 구성
- Remote repository(그룹저장소)가 origin이 되고, Local repository(개인 저장소)가 Local이 됨
(2) Fork
- "Upstream - Origin - Local"로 구성
- Remote repository(그룹저장소)가 Upastream이 되고, Local repository(개인 저장소)가 Origin이 됨
- push를 하면 개인저장소(origin)에 들어감 → 그룹저장소에는 반영이 안됨
- PR로 개인 저장소와 그룹 저장소 sync 맞추기
5. Convention(협약)
(1) Coding Style
Naming, Indentation, Quote
(2) Structure
File / Directory, Architecture
(3) Commit
Conventional Commits, Angular Commit Message
(4) Branching
Git Flow, GitHub Flow, GitLab Flow
(5) Automation
CI / CD
6. Management
1. Issue
2. Issue를 잘 사용하는 법
- '레이블'을 달아서 시각적으로 만들기
- 'template' 사용하기(.github를 만들고, template 생성하면 됨)
- 'Project(진행상황별로 기록)와 'Milestone(기한을 맞추어서 작업해야 하는 것)'사용
3. GitHub Issue의 Pros and Cons(Jira와 같은 다른 도구와 비교)
(1) 장점
- 접근성이 높다.
- 도구의 파편화를 막을 수 있다.
- Jira보다 빠르다.
- 누구나 볼 수 있다.(Jira는 초대된 팀 멤버만 볼 수 있음)
(2) 단점
- Project와 Milestone 등이 아직 불편함.
7. Collaboration(협업)
1. 존중합시다.
2. 친절합시다.
3. 겸손합시다.
8. Pull Request
- 코드를 통합하는 방법 중 하나
- Git의 기능이 아닌, GitHub의 기능
- 코드 리뷰 수행 가능
이 글은 DND에서 제공된 'GitHub로 협업하기' 세미나를 듣고 정리한 내용입니다.