<aside> 🚩 Goal
Git - 협업, merge, branch- (1)_exported.mp4
주요 개념 복습하기
버전 관리: 버전이 다르다는 것은 프로젝트 상태가 변경되었다는 것! Git 은 가장 널리 쓰이는 버전관리 도구 중에 하나로 commit 을 사용해서 버전이 달라지는 것을 관리합니다.
repo : 'Git으로 관리되는 프로젝트' 를 Git 에서는 repo(리포, repository 리포지토리의 약자) 라고 부릅니다. 내 컴퓨터에 저장되어있는 리포지토리를 로컬 repo(local repository) 라고 합니다. Github 처럼 다른 곳에서 접속할 수 있는 공간에 저장되어있는 것을 원격 repo(remote repository) 라고 합니다.
작업내역을 반영하기 위한 단계: add(staging) - commit
commit : 현재 프로젝트의 상태를 찰칵 📸 저장하는 것을 이라고 합니다.
add (혹은 staging, 스테이징) : commit 에 반영할지 안할지는 파일 단위로 선택할 수 있습니다. commit 에 반영할 파일을 선택하는 것
commit history : commit 한 순서대로의 리스트
Tracking(추적) : 로컬 repo 와 원격 repo 를 연결한다!
push : 로컬 repo 의 commit 들을 원격 repo 에 반영하기(push)! 밀어넣기. 원격 repo 에 없는 즉,새로운 commit 내역을 모두 원격 repo 에 한 번에 반영합니다.
pull : 원격 repo 의 commit 들을 로컬 repo 로 반영하기(pull)! 땡겨오기. 로컬 repo 에 없는 즉,새로운 commit 내역을 모두 로컬 repo 에 한 번에 반영합니다.
<aside> 👉 1주차 배운 내용을 덧붙여서 배워나갑니다! 나만의 개념지도를 참고하면서 가볼까요?
</aside>
Git 협업 시나리오
<aside> 👉 김르탄씨와 스선장이 김치요리법 프로젝트를 Git으로 협업하는 방식을 관찰하면서 개념을 배워봅니다!
실제 회사에서, 오픈소스 컨트리뷰션(오픈소스에 기여하는 것), 친구와 프로젝트를 같이 할 때 이런 상황들이 발생하겠죠?
</aside>
김르탄씨와 스선장은 각각 자신들의 김치찌개 비법을 김치요리 원격 Repo 에 추가하고 싶습니다!
아니! 그런데 이게 무슨 일이죠? 둘 모두 김치찌개 요리법 파일을 업데이트 하니 충돌이 나버렸네요.
김르탄 : 나도 하려고 했는데! 나도 내 김치찌개 요리비법을 공유하고 싶다고!
스선장 : 아니 당신 요리법을 내가 무얼 믿고! 내 꺼보다 좋은지 안좋은지 모르잖아!
이런 경우에 어떻게 해결해야할까요? 아래 작업방식이 필요하겠네요!
누가 이 작업을 진행할 것인지 정한다.
각자 맡은 것에 대해 작업한다.
각자 작업을 프로젝트에 합칠 수 있게 공유한다.
작업한 내용을 리뷰하고 최종적으로 프로젝트에 반영한다.
<aside> 🔥 실제로 협업하는 개발 프로젝트를 할 때에는 위와 같은 방식으로 진행합니다. 협업하는 조직마다 Git 을 사용하는 방법을 약속해두고 협업합니다.
우리는 협업할 때 기초가 되는 Git 개념들을 실습과 함께 배워보겠습니다.
</aside>
Git - 협업, merge, branch- (2)_exported.mp4
issue 가 뭔가요? - 개념 탑재
<aside> 🔥 위에서 정한 작업방식 중 1단계를 issue를 사용해 작업할 수 있습니다.
👉 1단계. 누가 이 작업을 진행할 것인지 정한다. - Issue 2단계. 각자 맡은 것에 대해 작업한다. - Branch 3단계. 각자 작업을 프로젝트에 합친다. - merge (경우에 따라). 작업한 내용을 리뷰하고 최종적으로 프로젝트에 반영한다. - PR 후 merge
</aside>
<aside> 👉 Github 외에도 많이 쓰이는 이슈 관리를 할 수 있는 도구는 Jira, Trello, YouTrack 등이 있어요.
이런 도구를 이슈를 추적(tracking)하면서 관리할 수 있다고 해서 이슈 트래커(issue tracker) 또는 이슈 추적도구(Issue Tracking Tool, 이슈 트래킹 툴) 라고 부릅니다.
</aside>
issue 만들어보기 - 실습
issue 와 연관된 commit 만들기- 실습
**[**👩🍳 배웠으면 써먹자] - issue 만들고 지워보기
Git - 협업, merge, branch- (3)_exported.mp4
브랜치(Branch) 가 뭔가요? - 개념 탑재
<aside> 🔥 위에서 정한 작업방식 중 2단계 각자 작업을 할 수 있는 공간을 만들기 위해 branch를 사용합니다.
1단계. 누가 이 작업을 진행할 것인지 정한다. - Issue 👉 2단계. 각자 맡은 것에 대해 작업한다. - Branch 3단계. 각자 작업을 프로젝트에 합친다. - merge (경우에 따라). 작업한 내용을 리뷰하고 최종적으로 프로젝트에 반영한다. - PR 후 merge
</aside>
브랜치(Branch)를 사용하게 되면 나뭇가지가 뻗어나오듯 기능에 맞게 나누어 작업할 수 있습니다. 이게 어떤 의미인지 예시로 보죠!
김르탄씨가 김치국 요리법을 작성하고, 스선장이 김치찜 요리법을 작성하고 있다고 해봅시다!
아래 commit history 를 보니, 김치국 요리법과 김치찜 요리법 작업 내역이 섞여 있어서 각 작업이 어떻게 진행되고 있는지 좀 보기가 어렵네요.
게다가 내 작업만 열심히 commit 하는 게 아니라 다른 부분도 신경을 써주어야해요. 두 사람이 같은 파일을 작업하면 충돌이 나서 더 이상 작업하기 힘들 수도 있겠네요. 서로가 작업한 commit 내역을 내 로컬 repo에도 틈틈이 반영해주어야해요.
<aside> 👉 잠깐! 우리는 그동안 commit 을 main 이라는 이름을 가진 브랜치에 해주었습니다. 프로젝트마다 기본 브랜치가 설정되어있답니다. 우리 프로젝트의 경우 main 브랜치가 기본 브랜치였기 때문에 따로 설정을 해주지 않아도 자동으로 main 브랜치에 commit 이 된 거에요.
</aside>
그럼 각 작업을 할 수 있게 브랜치를 나누면 어떻게 될까요?
작업 목적에 따라 김치국 branch, 김치찜 branch 를 만들어서 관련된 작업만 하고, 나중에 하나로 합치면 되겠죠!
브랜치를 나누어 작업하기 - 실습 설명