핵심 쏙쏙 Git - 2주차

jini·2022년 11월 15일
0

Sparta Coding🦸‍♂

목록 보기
6/8
post-thumbnail

📎2주차 강의노트


  • 2주차. 같이 하기 위한 Git!
    협업하기 위한 기초 개념을 배웁니다.
    👀 핵심 키워드 : Issue , branch ,merge

Git을 이용한 협업 방식?이 왜 필요한가?

협업 프로젝트를 하는 경우, 여러명의 사람들이 본인들의 원격repo를 추가하려고 할때?! 충돌(conflict)이 나는 경우가 있다. 이런 경우 해결방법을 알아보자!


개발 프로젝트를 진행할때는 아래와 같은 작업방식이 필요하다.

1. 누가 이 작업 할 것인지 정한다 > Issue
2. 각자 맡은 것을 작업한다 > Branch

3. 각자 작업을 프로젝트에 합칠 수 있게 공유한다 > merge

4. 작업한 내용을 리뷰하고 최종적으로 프로젝트에 반영한다 >(경우에 따라) PR 후 merge


issue

누가 이 작업을 할지 정하는 방법?! issue 를 사용해보자!

issue 는 프로젝트에서 해결해야하는 문제!
"이 기능에 버그가 있으니 issue로 등록하자!"
"이 버튼은 수정해야하니 issue를 등록하자!"
"56번 issue는 제가 처리할게요, issue 등록하자!"

issue 만들기

  • 제목과 상세 내용은 협업하는 사람들도 잘 볼수있게 적기

  • 생성된 issue 제목옆에 내가 따로 쓰지않은 #숫자가 보인다. issue 번호!! 이 issue에 내가 작업한 작업물을 넣으려면 번호를 기억해야한다. (처음시작은 1부터 시작한다.)

  • 관련 내용에 대한 코멘트도 issue에 적어서 넣을수있다.

  • issue 전체 탭에서 issue번호 확인 가능함
  • issue가 종료되면 issue를 종료하고 종료 이유도 작성!
  • issue는 종료되어도 필요하면 다시 오픈할수있다.

issue 와 연관된 commit 만들기

  • 커밋메시지작성할때 해당 issue번호를 적어 커밋하기

  • 원격 repo의 해당 이슈 넘버에서 커밋메시지가 확인된다.


branch

branch : 각자 작업하기

이슈를 사용해서 각자 프젝 작업을 나눴다고 해보자!

따로 작업은 하지만 작업대(main)는 같다!
서로의 작업이 섞이기도 하고, 우연히 같은 작업을 하게되는 경우도 생기면 충돌이 발생하게 된다.

그럼 한 작업대(main)가 아니고 branch를 나눠서 작업하고 나중에 합치면?!!

  • 브랜치를 새로 만들어주자

  • 새 브랜치는 관리가 쉽게 feature/이슈번호_관리쉬운이름 형식으로 만들어줌(관행적인 이름)
  • 앞으로 하는 commit 은 방금 만든 브랜치인 feature/5_jjigae 에만 반영됩니다. 현재 작업하는 브랜치를 선택하는 것을 체크아웃(checkout) 이라고 합니다.

main : 로컬 repo의 main 브랜치
feature/5_jjigae : 로컬 repo의 feature/5_jjigae 브랜치
origin/main : origin(연결시켜준 원격 repo)의 main 브랜치
origin/HEAD : 현재 작업중인 commit. origin(연결시켜준 원격 repo)의 최신 commit

  • feature/5_jjigae 에 실습용으로 파일 수정 두번을 해서 커밋해주었다. 위 상태와 같이 가지가 나온 상황. 이 Branch를 이제 Merge(병합)해야한다!

merge

Merge(병합) : 브랜치를 다른 브랜치에 합치는 것

브랜치 하나를 Merge(병합) 하기

1.commit 을 반영시킬 브랜치인 main 으로 체크아웃 합니다. 브랜치 밑 main 을 더블 클릭하세요.

  1. 병합을 클릭 -> feature/5_jjigae 의 가장 최신 commit(파란색 이름표가 붙어있는 커밋) 을 선택하고 확인을 누름
    모든 경우에 merge되는 commit 메시지는 자동으로 생성하는 옵션을 넣어줌. (하단 빠른 병합(fast-forward)이 가능해도 새 커밋 생성 옵션)

  2. 이제 feature/5_jjigae 작업이 끝났으니 브랜치를 삭제하자! 브랜치는 main으로 클릭한 후에 5_jjigae 를 삭제

💡여러 브랜치에 commit하고 Merge(병합) 하기

  • 각자 파일에서 브랜치를 만들고 작업!

  • 차례로 병합해준 후 작업이 완료된 브랜치는 삭제(강제삭제)까지 !

충돌 해결하기 - Merge conflict

🛑 하나의 파일을 여러 브랜치에서 수정하고 하나의 branch에 merge 하려고 할 때 merge conflict(병합 충돌) 가 발생

git에서는 친절하게 충돌이 나는 부분을 알려준다:) 어떤 수정 내용을 반영할지 아래와 같이 메시지를 줌

<<<<<<< HEAD
{현재 브랜치의 다른 파일 내용}
=======
{충돌나는 브랜치명 또는 commit에서의 다른 파일 내용}
>>>>>>> 충돌나는 브랜치명 또는 commmit 아이디
  • merge confilct 를 고치려면, 내가 원하는 대로 파일을 수정하고(어떤 내용을 반영할지 결정) 에러 메세지 부분을 지우면 된다. 그러나, 새로운 내용 수정은 하지말고 있는 내용에서 수정할 내용을 선택하자!

  • 충돌 수정한 후 , merge commit !


  • tracking 한다는 것은 로컬 repo원격 repo의 특정 브랜치를 연결해주는 것

profile
🌱

0개의 댓글