
Teck Talk 영상 : https://youtu.be/0sUdtha3mek
Git을 알아야 하는 이유
- git은 많은 회사에서 자격요건으로 있기 때문
- git은 분산 버전 관리 시스템으로 협업을 하기 편리하기 때문에 회사에서 무조건 사용
- 원티드에서 가져온 일부 회사의 자격요건과 우대사항
- git은 분산 버전 관리 시스템으로 협업을 하기 편리하기 때문에 회사에서 무조건 사용
Git?
- 로컬에서 관리
- 누가 무엇을 어떻게 변경했는지 기록하고 내용을 공유
- 분산 버전 관리 시스템(Version Control System)
- 분산 버전 관리 시스템이 없다면?
- 위 사진처럼 모든 버전에 관한 파일을 저장해야 함.
- 매우 불편하고 많은 용량을 차지함
- 분산 버전 관리 시스템이 없다면?
Github?
- 클라우드 서비스
- git으로 관리하는 프로젝트를 올려둘 수 있는 git 호스팅 사이트
Git 구조

- 작업공간(working directory)에서 git add
- staging area에 있는 파일을 git commit
- 로컬 저장소에 git commit 됨
- git push 해서 원격저장소에 push
⚠ git commit을 한 후 git push를 하지 않는다면 카메라로 사진을 찍고 인스타그램에 올리지 않는 것과 같다.


Git Branch

- git에서 branch는 독립적인 working directory를 의미
- 현재의 버전으로 다른 버전을 만들어서 가지를 치는 것
- 여러가지 버전의 branch를 만들어 보고, 이를 합치는 방식으로 작업
git branch를 이용해 작업하는 방법
- git은 동시에 작업이 가능하기 때문에 협업 시 원격으로부터 최신 master branch를 pull
- 자신이 작업한 local branch로 이동하여 작업
- 자신의 local master branch에 2번에서 작업한 내용을 merge
- 자신이 작업한 모든 내용이 있는 local master branch를 원격 master branch에 반영
Git Flow
- git flow는 git을 활용해서 협업을 할 때 5개의 branch를 각각의 역할에 맞게 사용하는 협업기법


각 branch 설명
- master branch
- 실제로 운영, 배포되어 사용자가 사용하게 될 코드가 있는 branch
- 가능하면 직접 건드리지 않음
- hotfix branch, release branch의 코드가 master branch로 merge 됨
- feature branch
- 특정 기능을 개발하는 branch
- 보통 develop branch에서 분리되고, 기능 개발이 완료되면 develop branch로 다시 merge 됨
- develop branch
- QA 단계를 거치기 전에 배포를 위해 적용되어야 할 개발이 이루어지는 branch
- QA가 필요한 기능들은 feature branch에서 develop branch로 merge 작업을 하고 나서 QA 단계로 감
- QA 단계에 가면 develop branch 코드에서 release branch가 분리되어서 release branch에서 QA 단계 진행
- release branch
- 배포를 앞둔 단계에서 QA를 진행하는 branch
- QA 단계를 거치고, 배포 시점이 되면 release branch는 master branch와 develop branch 두 곳으로 merge 됨
- hotfix branch
- 긴급 수정 branch
- master branch, 즉 이미 운영 중인 서비스에서 긴급한 이슈가 발견되면 급하게 고치는 branch
- hotfix branch로 이동해서 수정이 되면 develop branch와 master branch로 merge 됨
Git Commit Message
- 프로젝트를 진행하면서 commit을 많이 하게 될 텐데 이때 commit message만 보고도 어떤 작업을 했는지 알 수 있도록 규칙을 정하고 일관적으로 작성해야 함

Github Issues
- Issue : 프로젝트를 진행하면서 발생하는 pull requests, bug, develop 등 모든 이벤트
- github에서는 Issues 기능을 통해 프로젝트에서 발생하는 모든 이슈를 관리할 수 있음
- 라벨링을 해 이슈별 주제를 구분함으로써 이슈의 양이 많더라도 관리하기 편리하게 해줌
- milestones 기능을 통해 스프린트 관리할 수 있음


Github Projects
- github의 projects는 다양한 이슈를 관리할 수 있는 칸반보드
- To do : 이슈들 중 해야 할 이슈들
- In Progress : 현재 진행 중인 이슈들
- Done : 완료된 이슈

'Modern Agile > Tech Talk' 카테고리의 다른 글
2022.02.24 - Framework vs. Library vs. API (0) | 2022.03.06 |
---|---|
2022.02.10 - RESTful (0) | 2022.03.06 |
2022.01.20 - Ajax (0) | 2022.01.20 |
2022.01.06 - HTML, CSS, JavaScript (0) | 2022.01.13 |
Tech Talk 이란? (0) | 2022.01.11 |