1. git은 현업에서 실제로 어떻게 쓰일까 ?

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

② 각자 공간에서 작업하기 - Branch 

③ 작업 내용 합치기 - Merge(병합) / Merge conflict 해결

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

 

2. Issue 할당

  • 프로젝트에서 issue(이슈) : 프로젝트에서 해결해야하는 문제
    • 버그(프로그램이 원하는 대로 동작하지 않는 것)를 신고 (Bug report, 버그 리포트)
    • 기능 추가 등의 프로젝트 개선 제안 (enhancement)
    • 위 문제들을 해결하기 위한 작업단위
  • issue 생성하는 방법 ( 각 항목을 아래처럼 적어주기 )
    • 제목과 상세 내용은 협업하는 사람도 잘 알아볼 수있도록
    • Assigness(담당자) : 이 이슈를 작업하거나 연관된 사람
    • Labels: 이 issue 가 어떤 건지 분류. Github이 만들어준 기본 라벨을 사용할 수도 있고, 내가 직접 만들어줄 수도 있다. 
    • 내용을 적은 후에 하단 초록색 버튼 Submit new issue 클릭!

issue 만드는 법
제목 옆에 생성된 이슈번호 #1를 커밋메시지를 작성하거나 협업을 위해 커뮤니케이션 할 때 유용하게 쓸 수 있다.

 

 

3. 각자 공간에서 작업하기 - Branch

  • 각 작업 브랜치에서 작업할 때는 다른 브랜치의 영향을 받지 않고 독립적으로 작업할 수 있다.
  • 작업 목적에 따라 branch 를 만들어서 관련된 작업만 하고, 나중에 하나로 Merge하게 된다.
  • Merge 하는 과정에서 같은 파일이 동일한 부분이 수정된 게 발견되면 Merge conflict(병합 충돌) 이 발생한다.

 

① 브랜치 생성하기:

 

1. 왼쪽 히스토리 탭을 선택하고 - 마지막 commit 에서 우클릭 한 후 브랜치 를 선택!

2. 새 브랜치 : 브랜치 이름을 내가 잘 관리할 수 있게 적어주기. ex) `feature/이슈번호_관리쉬운이름` 형식 (feature 는 기능 개발하는 브랜치에 관행적으로 붙여주는 이름)
3. 정보를 입력한 후 '브랜치 생성' 버튼 클릭!

 

 

  • 왼쪽 브랜치 탭 : feature 밑에 3_jjigae 항목이 생긴걸 확인할 수 있다. sourcetree 에서는 브랜치명 안에 / 를 적어주면 마치 폴더처럼 보여준다. (create branch - feature/3_jjigae)
  • 해당 commit 에 붙어있는 파란색 이름표는 브랜치명이다. 해당 브랜치의 최신 commit 에 이름표를 붙여 준다.
  • 현재 작업하는 브랜치를 선택하는 것을 체크아웃(checkout) 이라고 한다. sourcetree 에서는 체크아웃된 브랜치, 즉 현재 작업 브랜치를 브랜치명 왼쪽 에 O 표시가 되어있다. 체크아웃된 브랜치에만 commit이 반영된다.

 

체크아웃 예시 ) leerice 브랜치에 체크아웃 되어있다.

 

 

※ 각 이름표는 아래와 같은 뜻을 가지고 있다.

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

 

 

② 브랜치 commit하기

 

 

 

③ 브랜치 삭제하기

  • 삭제할 브랜치는 체크아웃(현재 작업 중인) 브랜치가 아니어야 한다.
  • 다른 브랜치 이름을 더블 클릭해서 다른 브랜치로 체크아웃한 후 진행하기! 
  • 삭제할 브랜치 선택 - 우클릭 - 해당 브랜치명 삭제 - 강제 삭제 옵션 선택 - 확인

 

 

4. 작업 내용 합치기 - Merge(병합) 

  • 브랜치의 작업 내역 commit 들을 다른 branch 로 반영(합치기)는 것을 Merge(머지, 병합)라고 한다.
  • 기본적으로 branch 단위로 merge 하게 된다.
  • 개발할 때는 기준이 되는 기본 브랜치를 정해놓고 다른 브랜치들을 기본 브랜치에 merge한다. (주로 distribution용, development용으로 병합)
  • 브랜치명은 규칙을 가지고 잘 이름 지으면 프로젝트 관리가 쉽다.
  • 작업이 완료되면 작업한 브랜치는 보통 삭제해 줌으로써 나중에 브랜치 설정이 꼬이는 것을 방지할 수 있다.

 

① 브랜치 Merge 하기

  • 커밋을 반영시킬 브랜치로 체크아웃
  • 파일 수정이 필요한 경우 상단 오른쪽에 파인더에서 보기를 클릭하여 현재 체크아웃 된 브랜치 내부의의 정확한 파일을 수정하도록 한다.
  • 머지할 부분을 클릭하고 소스트리 상단 merge(병합)을 클릭한다.
  • 아래와 같이 체크리스트를 확인해 주고 병합한다.

 

아래 세가지 항목 체크하기!

 

② Merge conflict

  • 에러를 안 내는 게 중요한게 아니라 버그(컴퓨터가 의도한 대로 동작하지 않는 것)를 고칠 수 있느냐 없느냐가 중요! 에러에 쫄지 말자
  • 하나의 파일을 여러 브랜치에서 수정하고 하나의 branch에 merge 하려고 할 때 merge conflict(병합 충돌) 가 발생한다.
  • 이럴 때 git 은 친절하게 이 충돌나는 내용 중에 어떤 내용을 반영하면 좋겠니? 하고 확인하는 메시지를 주고 자동으로 파일을 합친 다음에 충돌이 나는 부분을 아래처럼 보여준다.

 

  • <<<<<<< 에서 >>>>>>> 까지가 충돌이 나는 부분이다. 변경된 내용 중 어떤 것을 브랜치에 반영할지 파악을 돕기 위해 정보를 알려주고 있다.
  • 이 merge confilct 를 고치려면, 내가 원하는 대로 파일을 수정하고(어떤 내용을 반영할지 결정) <<<<<<< HEAD , ======= , >>>>>>> 충돌나는 브랜치명 또는 commmit 아이디 를 지우면 된다.
  • 그러면 Git 이 해결되었구나! 하고 알아듣는다. =======를 기준으로 앞 부분 <<<<<<< HEAD 부분은 현재 브랜치, 즉 main 브랜치의 해당 파일의 내용을 보여준다.
  • 즉, 현재 브랜치(main)의 파일 내용은 아래와 같다. 분홍색 부분이 다른 브랜치와 다른 부분을 보여준다.

 

 

  • 그런 후에 이렇게 수정된 파일을 commit 하면 완료!
  • 충돌을 해결하기 위해서는 반영할 내용만 남기고 지워주면 되는데, 새로운 추가사항은 병합 후 다시 새로운 커밋메시지로 업데이트 해주는 것 좋다. 이렇게 하는 것이 나중에 버그를 찾기도 쉽고 팀원들과 더 원활한 소통을 할 수 있게 해준다.
  • 파일을 수정하고 나서 sourcetree 를 켜고 하단 commit 메시지 적는 창에 마우스 클릭하면 자동으로 커밋 메시지가 작성된다. 
  • 자동으로 작성되는 commit 메시지 끝부분을 보면 어떤 파일이 conflict(충돌)났는지도 정보도 적혀있다.

 

 

 

5. 원격 repo 와 Branch

  • tracking 한다는 것은 로컬 repo와 원격 repo의 특정 브랜치를 연결해주는 것
  • 따로 설정을 해주지 않으면 기본적으로 로컬 repo의 브랜치명와 같게 원격 repo의 브랜치명이 생성되어 tracking된다.
  • push와 pull 은 기본적으로 tracking(추적)되고 있는 브랜치를 기준으로 commit 내역을 반영한다.

 


 

 

[ 오시영 튜터님의 꿀팁 자료들 ]

 

 

구글링이 무엇인가요?

  • 여러분이 모르는 것, 전 세계 사람들 다 모릅니다. 이럴 땐 필요한 건 구글! 구글에 검색한다고 해서 구글링(Googling) 이라고 합니다.
  • 기술(도구 이름) + 단어 조합으로 하면 훨씬 더 좋은 검색 결과를 얻을 수 있어요. ( 예. sourcetree branch )
  • 검색어 팁
    • 아래처럼 검색어를 조합해 입력해보세요!
    • 기술을 처음 배우고 싶을 때 : '기술이름' + 'tutorial' (예. git tutorial)
    • 기능을 찾을 때 : '기술이름' + 'how to' + '찾을 내용' (예. git how to merge )
    • 어떻게 사용하는지 예제를 보고 싶을 때 : '기술이름' + '내용' + 'example' (예. github flow example)
    • 원하는 사이트명 포함해 검색할 수도 있습니다. (예: stackoverflow git merge - stackoverflow 라는 사이트에서 검색)
  • 검색 결과 중에, 좋은 자료 고르기
    • 좋은 자료를 찾으려면 경험치가 필요해요. 많이 검색해보면 자연스레 나만의 검색 노하우와 자료 판단하는 눈이 길러질 거에요.
    • 해결책뿐만 아니라 문제(에러)의 이유까지 적어두어서 내 문제와 같은지 판단할 수 있는 정보를 제공하는 글
    • stackoverflow - 개발 QnA 사이트입니다. 전 세계적으로 많이 쓰입니다. 질문과 답변, 댓글에 사용자들이 vote 할 수 있어요. 좋은 질문과 답변에는 vote 수가 높습니다.
    • 기술 공식 문서
  • 신뢰할 수 있는 블로그(tech 회사의 기술 블로그, IT 전문 매거진) ex) 우하한형제들 기술 블로그

 

개발 공부를 더 잘하기 위한 방법

 

1. 내용이 쉽다 → 난이도 높이기

  • 추가자료 읽어 보고 생각/실제로 해보기
  •  나만의 실험 고안하기
  • 에러를 일부러 내보고 해결하는 거 구글링해보기
  • 그 과정에서 내가 깨달은 것 TIL 에 적어보기

 

2. 아 적절해요 좋은데요?

  • 다양하게 시도해보기
  • 그 과정에서 내가 깨달은 것 TIL 에 적어보기

 

3. 너무 어렵다, 집에 있어도 집에 가고 싶다! 🏠

  • 난이도 낮추기
  • 영상 보면서 천천히 시간 들여서 따라해보기
  • 그 다음에 다시 시도해보기
  • 내가 어려워했던 내용이 무엇인지 정리해보기
  • 그 과정에서 내가 깨달은 것 TIL 에 적어보기

+ Recent posts