(유튜브 링크)
우테코를 진행하면서 깃허브 사용법 때문에 너무 많은 시간이 들었다.
코드스쿼드에서는 협업을 중시하는데, 협업을 하는데 있어 사고를 미연에 방지하고자 발표주제를 선정하였다.
위와 같이 뭉남과 버디는 함께 맥북 가격 정보를 정리하는 웹을 개발하기로 하였다. 이때 뭉남과 버디가 동시에 브랜치 없이 버전관리를 한다면 어떻게 될까?
-> 서로의 코드에 영향을 받아 원활한 개발이 이루어지지 않을 수 있다.
즉 브랜치란 독립적으로 작업을 할 수 있도록 도와주는 것입니다.


이렇게 만들고 싶은 브랜치 명을 입력하고
Create branch: 브랜치명
클릭하면 브랜치가 생성된다.
git branch 브랜치이름
git checkout 브랜치이름
git push origin 브랜치이름

(1, 2를 동시에 진행하는 방법으로는)
git checkout -b donhyun
브랜치를 생성한 후 규칙은 파트너와 협의 후 결정하도록 한다.
1. [master] 브랜치에 직접 커밋하지 않기
2. 기능 개발을 하기 전에 [master] 브랜치를 기준으로 새로운 브랜치를 만든다.
3. 기능 개발을 위한 브랜치 명은 [feature/기능명] 형식으로 하고, 커밋은 한명만 한다.
4. [feature/기능명] 브랜치에서 기능개발이 끝나면 [master] 브랜치에 이를 합친다.
Git 에서 브랜치와 브랜치를 합치는 명령어는 Merge 이다.
뭉남과 버디가 개발이 끝나면, 각자 만든 두 개의 브랜치를 [master] 브랜치에 합쳐야 한다.


New pull request 클릭!
풀리퀘스트를 하게 되면

어떤 내용이 변경되었는지 볼 수 있고
Commit merge 를 통해 병합할 수 있다.

merge 에서 충돌이 발생하면 위와 같이 어떠한 부분에서 충돌이 되었는지 알려주게 된다. 
올바르게 수정하면 충돌 없이 병합되는 것을 알 수 있다.

깃허브에서 conflict 되었다고 알려준다.
여기서 Resolve conflicts 클릭하면

어떠한 부분에서 충돌이 발생했는지 알려준다.

충돌이 발생한 부분을 수정하고 Commit merge 를 클릭하면 정상적으로 병합할 수 있게 된다.

버전 관리 시스템 (Version Controll System) VCS 활용하기
밑의 세 가지 방법은 Git 기반 워크플로우

Develop
-> 개발자들이 이 브랜치를 기준으로 가지를 치고 병합한다.
Feature
-> 새로운 기능을 추가하는 브랜치
(develop 브랜치에서 나오고 들어간다.)
Release
-> develop 브랜치에서 개발한 내용을 master 브랜치에 병합하기 전 품질검사를 하는 브랜치
Hotfix
-> 버그가 발생하면 모두 Hotfix 브랜치로 들어가서 수정한다.
수정 후 develop, master 브랜치에 반영한다. (release 전이라면 release 브랜치에도 반영한다.)

Git flow 가 가진 복잡성 모두 제거
유지 브랜치는 master 하나만 둔다.
master를 제외한 브랜치는 개발자의 재량에 맡긴다.
상시 배포

GitHub flow 는 너무나도 간단하여 배포, 환경 구성, 릴리즈, 통합에 대한 이슈를 남겨둔 것이 많다. 그것을 보안하기 위해 GitLab 에서 관련 내용들을 추가적으로 덧붙여 설명한 것을 일컫는다.