본문 바로가기
부트캠프 개발일기/Pre-Project

82일차: Pre-Project Day 2 (GitHub 다루기)

by shyun00 2023. 6. 12.

팀을 이루어 하나의 프로젝트를 진행할 때 중요한 부분 중 일정 및 업무 관리, 코드 이력 관리가 있다.

오늘은 그 방법에 대해 학습하였다.

❯ GitHub Repository

이미 여러 학습을 하면서 레포지토리를 생성해보기도 하고 다른 레포지토리를 Fork 하기도 하고 Push, Pull, PR 하면서 실습을 진행했다.

레포지토리에서 실질적인 코드 뿐만 아니라 여러 파일들을 확인할 수 있었는데,

이때까지는 크게 수정할일이 없었지만 프로젝트부터는 해당 파일들을 관리하는 것 또한 수행해야 할 내용 중 하나이다.

  • README.md: 마크다운 문법을 통해 작성할 수 있으며 다른 사용자나 개발자가 해당 프로젝트를 사용/이해하는데 도움 되는 내용을 제공한다.
  • .gitignore: git을 통해 관리하지 않는 파일을 설정할 수 있다. secret token이나 설정파일 등 공유되지 않아야 하거나 공유할 필요가 없는 파일을 기록해 두면 push 할 때에도 레포지토리에 push 되지 않는다.
  • LISENSE: 해당 코드의 라이센스를 포기한다. 라이선스에 따라 사용가능 여부가 달라질 수 있으므로 확인이 필요하다.

여러 공개되어있는 레포지토리들을 보면 README.md 파일을 통해 프로젝트 이름이나 주요 기능, 참여자 및 기능들을 보기 좋게 잘 나타낸 경우들이 있었다. 마크다운 문법을 통해 제목 / 본문 / 그림 / 표 등 여러 가지를 삽입할 수 있었는데 자세한 작성법은 아래 사이트를 참고했다.

리드미 파일을 잘 작성하는 방법

README.md 작성하기 - 마크다운 문법

❯ GitHub 프로젝트 관리 관련 기능

  • Issue: 새로운 기능 제안, 버그 제보 등 프로젝트에서의 이슈를 의미한다. Issue는 아래에서 얘기할 하나의 칸반으로 사용 가능하다.
  • Milestone: Issue를 그룹화 하는데 사용한다. 설계완료/개발완료/시스템테스트완료 등 주요 단계를 구분할 수도, 혹은 최소기능/추가기능 등 기능 중요도에 따라 구분하는 등 여러 기준에 따라 그룹화할 수 있다. Milestone에 연결된 Issue가 종료되면 자동으로 업데이트된다.
  • Pull Request: 작업한 내용을 Git branch에 병합할 수 있는지 요청을 보내는 것을 말한다. 확인 후 merge 할 수 있다.
  • Project: GitHub 내에서 업무 관리를 해줄 수 있는 도구이다. 칸반보드를 생성하고 진행상황을 관리할 수 있다.
  • Kanban: 프로젝트 관리 및 작업 흐름을 시각화하는 방법이다. 작업 항목을 카드 형태로 표현하고 보드에 배치하여 진행 상황을 시각적으로 추적할 수 있다. 보드의 열을 할 일 / 진행 중 / 완료 등 진행 상태에 따라 나타낼 수 있다. 진행 중인 작업 개수를 정해서 (WIP) 작업량을 조절할 수 있다.

To do Application 프로젝트 예시

위 그림은 To do Application을 작성하기 위한 아주 간단한 프로젝트를 정의한 칸반 보드 내용이다. (기능 및 내용은 임의 작성)

각각의 이슈가 칸반 카드로 나타나있으며 제목 아래에 표시된 내용이 해당 Issue가 속해있는 Milestone을 나타낸다.

칸반 카드를 이동하며 현재 진행 상황을 나타낼 수 있다.

 

또한 아래와 같이 Milestone별 진행 현황을 확인할 수 있다.

❯ Git Flow

혼자 실습을 할 때는 Branch의 역할이 크게 중요하지 않았다.

하지만 여러 사람들과 함께 여러 가지 기능을 구현할 경우 Branch를 사용하고 merge 하는 과정이 중요하다.

코드 관리를 위해 브랜치의 종류를 나눠서 관리하는 것을 브랜칭 전략이라고 하는데, 그중 대표적인 전략이 Git flow이다.

GIT-FLOW / 출처: KINTO Technologies Tech Blog

main 브랜치에는 언제든 출시할 수 있는 안정화된 코드가 들어간다. (언제든지 제품으로 출시할 수 있는 코드)

dev(development) 브랜치에는 개발 중인 내용의 코드가 들어간다. (병합, 배포, 통합테스트 등을 진행하며 개발중인 코드)

feat(feature) 브랜치에서 각각의 기능, 문서, 리팩토링을 위한 작업을 진행한다. (각 작업을 구현하기 위해 작성 중인 코드)

 

이번 Pre project에서도 main, dev, feat 브랜치를 사용해 효율적으로 코드를 관리해보고자 한다.


부트캠프 초반에 배웠던 Git 사용법을 다시 상기할 수 있는 내용이었다.

혼자 작업하면서도 pull / push 하면서 여러 오류들이 생겼었는데, 그때는 정 안되면 코드를 다 지우고(...) 새롭게 작업을 해도 됐지만

이제 다 함께 작업해야 하는 만큼 GitHub을 잘 써야겠다는 생각이 들었다.

오늘 실시간 수업을 통해 충돌이 발생했을 때 조치 방법들에 대해 알려주셨다.

내가 겪었던 충돌 관련 내용들도 아주 깔끔하게 설명해 주셔서 많은 도움이 됐다.

앞으로 작업하면서 많은 에러들을 만나겠지만 무사히 잘 해결해 나갈 수 있기를...!!😀