[스파르타코딩클럽] 핵심 쏙쏙 Git - 3주차 개발일지
드디어 3주차! 마지막 강의까지 왔다. 여기까지 온 나 너무 수고했다. 그동안 git 정리해야지 공부해야지 생각만하고 있었는데 드디어 스파르타 덕분에 할 수 있었다! 1주차부터 3주차까지 강의제목대로 핵심만 쏙쏙 공부할 수 있었다. commit, branch, pull&push 등등 기초적인 부분들을 학습할 수 있어 좋았고 배웠던 것을 기반으로 나만의 git을 완성해 나갈 것이다!
3주차 수업목표
- 협업하기 위한 작업 관리 스킬을 익히기 - PR과 commit 되돌리기, 임시 저장
- 협업하기 좋은 사람이 되기 위해 기본 협업 매너를 익힌다.
- Github으로 다른 사람과 소통하기 - 내 포트폴리오, 오픈소스
01. 내 작업을 반영해주시겠어요? - PR
작업내역을 프로젝트에 반영하는 것이 아니라 충분히 리뷰받고 최종적으로 프로젝트에 반영하는 단계이다.
1단계. 누가 이 작업 할 것인지 정한다. - Issue
2단계. 각자 맡은 것을 작업한다. - Branch
3단계. 각자 작업을 프로젝트에 합친다. - merge
👉 (경우에 따라). 작업한 내용을 리뷰하고 최종적으로 프로젝트에 반영한다. - PR 후 merge
PR(Pull Request, 풀리퀘스트)는 내 작업내역을 바로 merge 하지 않고, 참여하고 있는 프로젝트에 내 작업(branch)를 merge 해달라고 요청(Request)를 먼저 보내는 것이다. 여러 피드백을 거쳐서 repo 관리자의 승인을 거쳐 프로젝트에 반영(merge)된다.
PR이 완료되기 전까지 PR 요청을 한 로컬 브랜치는 삭제하지 말자! PR이 반영되기 전 추가 commit을 해야한다면, 로컬 branch에서 commit후 원격 branch에 push해서 변경된 내용을 반영한다.
fork(포크)는 원본 소스코드를 복사해서 새로운 독립적인 소프트웨어로 개발하는 것을 말한다.
02. 최신 commit 고치기 - amend
최신 commit 수정 -> amend(어맨드, 고치기) **가장 최신 commit만 수정 가능
어떤 내용을 되돌렸는지 새로운 commit 남기기 -> revert(리버트) **이전 커밋도 수정 가능
commit 했던 작업내역을 리셋 -> reset
프로젝트의 변경사항을 임시적으로 보관 -> stash(스태시)
꼭! commit을 되돌리는 작업은 나만 사용하는 branch에서만 작업하기. 그렇지 않으면 다른 사람의 commit history가 엉망이 될 수 있다.
03. 작업으로 의사소통하기
- commit 메시지 작성 규칙은 commit 메시지 컨벤션(commit message convention)!
- 👀 좋은 commit 메시지, 단위로 작성하게 되면
-어떤 작업을 했는지 commit history (commit log)만 보고 알 수 있다
-버그를 찾을 때와 코드 고치기 쉽다
-다른 사람이 코드를 리뷰할 때 편하다
- commit 단위는 내가 기록하는 작업의 단위
- 👀 코드리뷰를 하는 이유!
-코드의 품질을 높일 수 있다!
-다른 사람의 눈으로 버그를 빠르게 발견할 수 있다!
-서로의 지식을 나누면서, 더 나은 방법을 찾아낼 수 있습니다.
-> 내가 만든 코드가 아니라 팀의 코드의 품질을 높인다!
04. Git 프로젝트 관리 - gitignore
공유하거나 공개되면 안되는 파일들은 공개된 repo 즉, 공개 Github repo에 올라가면 안되겠죠? Git이 마치 이런 파일들을 없는 것처럼 무시하게 하는 설정은 .gitignore이다. 파일명을 .gitignore로 만들고 여기에 Git이 무시해야할 파일 또는 폴더이름을 적어주면 된다. 그리고 나서 내 프로젝트의 최상위 폴더에 저장하면 끝.
05. Git 프로젝트 관리 - README
Github 프로젝트에서도 README.md를 만들어 프로젝트 안내글을 적어둔다. markdown은 서식이 적용된 텍스트 파일이다. 보통 텍스트 편집기로도 사용할 수 있지만, markdown 문법을 제공하는 편집기를 사용하면 서식이 어떻게 적용되는지 볼 수 있다.
06. Github에서 정보 얻기 - 개발자의 SNS
좋은 코드는 어떻게 탐색해야할까? 아키텍쳐 등 좋다고 할 수 있는 요소는 많지만 그 중 두가지만 짚어보겠다.
- 해당 기술 또는 프로그래밍 언어를 잘 사용하고 있고 -> 공식 튜토리얼, 공식문서의 코드 조각, 공식 개발 프로젝트
- 다른 사람들에게 유용한 프로젝트 -> 많은 사람들에게 반응이 좋고 널리 쓰이는 프로젝트
오픈소스란 누구나 프로젝트를 사용, 수정, 배포할 수 있는 프로젝트를 의미한다. 라이센스를 지키고 많은 사람들이 프로젝트에 컨트리뷰션(contribution, 기여)하면서 발전시켜나갈 수 있다. Python, Go, Javascript, Spring, React, Django, Spark, Hadoop 등등 널리 쓰이는 많은 프로그래밍 언어와 기술들이 모두 오픈소스이다.