Git ➁

minkyung·2022년 5월 8일
0

항해99

목록 보기
2/2
post-thumbnail

[수업 목표]

  1. 협업하기 위한 Git 기본 개념을 익힌다 - issue, branch, merge
  2. 두 명 이상과 협업하는 Git 프로젝트를 만들 수 있다.
  3. 기능별로 나누어 작업내역을 남길 수 있다.

01. 협업위한 Git 배우기!

다른 로컬 리포에서 같은 파일 푸시했을 때 충돌남.
그러면 깃이 어떤거 선택할건지 물어봄.

이런 경우 적용할 수 있는 해결 방식
1. 누가 이 작업 할 것인지 정한다. (issue)
2. 각자 맡은 것을 작업한다. (branch)
3. 각자 작업을 프로젝트에 합칠 수 있게 공유한다. (merge)
(경우에따라 4.) 작업한 내용을 리뷰하고 최종적으로 프로젝트에 반영한다. (PR 후 merge)

02. 누가 이 작업할 거에요? - Issue 할당

  • 프로젝트에서 issue(이슈)는 프로젝트에서 해결해야하는 문제로 아래같은 것이 있어요.
    - 버그(프로그램이 원하는 대로 동작하지 않는 것)를 신고 (Bug report, 버그 리포트)
    - 기능 추가 등의 프로젝트 개선 제안 (enhancement)
    - 위 문제들을 해결하기 위한 작업단위
  • issue 와 연관된 commit 만들기- 실습
    '김치찌개 육수 요리법 추가 #1'
    커밋 메시지 뒤에 #1(이슈번호) 붙여서 커밋하면 이슈 탭에도, 코드 탭에도 표기됨

Github 공식 이슈 관리 소개 >
Github을 활용한 이슈관리 블로그 글 >

03. 각자 공간에서 작업하기 - Branch - 개념

기능 별로 잘 보이게 하기 위해서 사용
기능에 맞게, 목적에 맞게 나눠 사용

우리는 그동안 commit 을 main 이라는 이름을 가진 브랜치에 해주었습니다.
프로젝트마다 기본 브랜치가 설정되어있답니다. 우리 프로젝트의 경우 main 브랜치가 기본 브랜치였기 때문에 따로 설정을 해주지 않아도 자동으로 main 브랜치에 commit 이 된 거에요.

작업 목적에 따라 김치국 branch, 김치찜 branch 를 만들어서 관련된 작업만 하고, 나중에 하나로 합치면 되겠죠!

04. 각자 공간에서 작업하기 - Branch - 실습

  • 작업할 브랜치 선택하는 것 = 체크아웃 이라고 함
    커밋할 때 브랜치 어디로 체크아웃되어있는지 확인하고 커밋해야함

  • 브랜치 태그 붙어있는 커밋 : 그 브랜치 내 최신 커밋임 표시

05. 각자 공간에서 작업하기 - Branch - 정리

브랜치를 삭제한다는 것은 그동안 브랜치에 했던 작업 내역 즉, commit 이 모두가 사라진다는 의미


06. 작업 내용 합치기 - Merge(병합) -개념

머지가 머죠 ...? (진심 이해못했음 개그라고 직접말하시기전까지)

Merge(병합) 는 브랜치를 다른 브랜치에 합치는 것입니다. 즉, 특정 브랜치의 commit 들을 다른 브랜치의 commit 내역에 모두 반영하는 것입니다. 기본적인 설정은 해당 브랜치의 모든 commit 을 모두 다 반영한다고 생각하면 됩니다.

  • 머지 예시 이미지
    머지 전 까지 main 브랜치는 김치국 브랜치에서 일어났던 일들 다 모르다가 머지되면 그 때 김치국 브랜치 내용이 다 반영됨
    실체 프로젝트에서는 작업 내용을 모두 합칠 기준 브랜치를 정해두고 작업함 (우리는 main)

프로젝트마다 Branch 관리하는 방법이 조금씩 다릅니다. commit하고 작업하는 방법을 통틀어 flow(흐름) 라고 합니다. 대표적으로 github-flow, gitlab-flow, git-flow 가 있습니다.

웹 프로젝트 개발의 경우 github-flow 를 많이 사용합니다. 우리가 실습하는 방식은 github-flow 와 유사합니다.
각 flow 에 대한 소개는 위 코드스니펫 git 사용 flow 를 참고해보세요.

GitHub Flow 공식 가이드 >
Git 사용 Flow 블로그 글 >

07. 작업 내용 합치기 - Merge(병합) -실습

  • 브랜치 하나를 머지하기
    1. 합치려고 하는 기준 브랜치에 체크아웃
    2. 상단에 병합(merge)클릭
    3. 커밋 선택
    4. 옵션 상위 3개 모두 선택

  • 3개 앞: 원격 리포와 내 커밋 얼마나 차이나나 세주는 것
    머지 후 머지된 브랜치 삭제해도됨 (feature/2_jjigae)
  • 여러 브랜치에 커밋하고 머지하기

    빠른 실습을 위해 issue 를 만들어 할당하는 작업은 하지 않겠습니다. 실제 프로젝트에서는 언제나 issue 먼저 만들고 논의 -할당한 후에 작업을 한다는 것을 잊지 마세요!

  • 김치전 커밋 먼저 머지하고, 볶음밥 커밋 머지함.

08. 작업 내용 합치기 - Merge(병합) - 정리와 꿀팁

  • 검색어 팁
    • 아래처럼 검색어를 조합해 입력해보세요!
    • 기술을 처음 배우고 싶을 때 : '기술이름' + 'tutorial' (예. git tutorial)
    • 기능을 찾을 때 : '기술이름' + 'how to' + '찾을 내용' (예. git how to merge )
    • 어떻게 사용하는지 예제를 보고 싶을 때 : '기술이름' + '내용' + 'example' (예. github flow example)
    • 원하는 사이트명 포함해 검색할 수도 있습니다. (예: stackoverflow git merge - stackoverflow 라는 사이트에서 검색)

우아한 형제들 기술 블로그 >

09. 충돌 해결하기 - Merge conflict - 개념과 준비

하나의 파일을 여러 브랜치에서 수정하고 머지하려고 할 때 보통 충돌남.

<<<<<<< HEAD
{현재 브랜치의 다른 파일 내용}
=======
{충돌나는 브랜치명 또는 commit에서의 다른 파일 내용}
>>>>>>> 충돌나는 브랜치명 또는 commmit 아이디

10. 충돌 해결하기 - Merge conflict - 실습

충돌 내용 편집 시 갑자기 없었던 내용 추가하면 작업내역에서 추적 불가능.
새로운 내용 추가 하고싶으면 기존에 있는 내용을 사용해서 병합 한 후 (충돌 해결한 후) 그 후에 새로운 커밋을 만들어야함

11. 충돌 해결하기 - Merge conflict - 정리

12. 원격 repo 와 Branch - 개념과 실습

푸시 풀 확장 개념 배우기
트래킹
트래킹 단위는 브랜치 단위로 트래킹함.
커밋 히스토리에 origin->원격 리포에 넣은 시점
특정 브랜치에 있는 커밋을 푸시하고 풀 하는 개념. 그래서 브랜치 별로 선택해서 트래킹할 수도 안할수도있음

13. 원격 repo 와 Branch - 정리와 꿀팁

14. 2주차 배운 개념 지도 그리기

이슈를 쓰는 것 만으로 프로젝트에 기여한다고 함. (contribution)
사용자가 보는 릴리즈용 브랜치, 개발용 브랜치 디벨롭 브랜치 (테스트) -> 디벨롭 브랜치에서 테스트 많이 한 다음에 릴리즈용에 머지하는 경우가 보통임.
작업이 다 된 브랜치는 삭제해줘야 관리할 때 편함.

profile
프론트엔드 개발자

0개의 댓글