2023 코드스쿼드 알고리즘 스터디 저장소 입니다.
Ethan | Poco | Den | NANII | Jace | Litae |
- 원본 저장소 Fork 하기
- Fork한 저장소를 로컬 저장소에 복사하기
- 내 닉네임으로 된 브랜치를 생성한다.
- 폴더구조 규칙에 맞게 파일을 생성해서 문제 풀기
- 커밋 규칙에 따라 소스코드를 내 원격 저장소에 업로드하기
- 내 원격 저장소에 있는 것을 원본 저장소에 PR 하기
- 다른 사람 PR을 보고 코드 리뷰하기
- 스터디에 있는 저장소에 우측 상단에 위치한
Fork
버튼을 누르면 본인의 저장소에 해당 저장소가 생성된다.
- 빈 폴더(디렉토리)를 하나 생성한다. (이름은 알아서 이쁘게 정한다.)
- 생성한 폴더 경로에서 아래의 명령어를 통해 원격에 있는 저장소를 복사해서 가져오자.
- 여기서
.
은 현재 경로를 가리킨다. 따라서 생략하지 말고 포함시켜주자. - 중요한건
clone
하는 대상은fork 해온 내 원격 저장소
라는 점을 유의해야한다.
- 여기서
git clone [내 원격 저장소 주소] .
// HTTPS 방식
$ git clone https://github.com/Algorithm-Squad/Algorithm.git .
// SSH 방식(SSH 인증키 등록 선행 - 발급 방법은 구글링 고!)
$ git clone [email protected]:Algorithm-Squad/Algorithm.git .
- 원본 원격 저장소(
upstream
) 등록하기upstream
의 최신 작업 내역을 빠르게pull
할 수 있게 연결하는 작업
git remote add upstream [원본 원격 저장소 URL]
// 예시
$git remote add upstream [email protected]:Algorithm-Squad/Algorithm.git
- 3번까지 등록하고 나면 원격 저장소를 조회했을 때,
origin(Fork)
과upstream(원본)
이 존재한다.
$git remote -v
origin [fork 떠온 저장소 경로] (fetch)
origin [fork 떠온 저장소 경로] (pull)
upstream [email protected]:Algorithm-Squad/Algorithm.git (fetch)
upstream [email protected]:Algorithm-Squad/Algorithm.git (pull)
git fetch —all
을 통해 저장소가 가진 commit 내역을 가져온다.
- 내 이름에 맞는 브랜치를 생성하고, 해당 브랜치로 이동해서 문제를 푼다.
// 브랜치 확인
$git branch # q 버튼 눌러서 브랜치 확인 내역을 종료한다.
// 브랜치 생성
$git branch [생성할 브랜치명]
// 브랜치 생성 + 이동 (오래된 버전)
$git checkout -b [이동할 브랜치명]
// 브랜치 생성 + 이동 (최근 버전)
$git switch -c [생성 + 이동할 브랜치명] 혹은 $git checkout -b [생성 + 이동할 브랜치명]
예시)
# 아래 명령어 중 하나를 선택해서 하면 브랜치를 생성하면서 그 브랜치로 이동이 한꺼번에 이루어진다.
# checkout으로 하든 switch로 하든 동작은 똑같이 수행된다.
$git checkout -b ethan
or
$git switch -c ethan
- 폴더 구조는
해당 주차/닉네임/문제 출처(플랫폼)/문제 이름
형식으로 작업한다. src
폴더의 하위 구조로 작성한다.
src/weekly1/ethan/leetCode/136_SingleNumber.js
- 특히 뼈대가 되는 폴더 구조를 잘못 생성하면, 처음부터 다시 작업할 수 있기 때문에 유의해서 폴더 구조를 만드는 것을 권장한다.
- Commit 메세지 작성에 규칙이 있으며, 이에 맞게 작성해야한다.
- commit 메세지 :
문제 출처(플랫폼)] 문제이름/ 난이도
- description :
문제 주소(option)
- commit 메세지 :
- 플랫폼 작성 양식
- [BOJ] - 백준
- [PGS] - 프로그래머스
- [LTC] - 리트코드
- [ETC] - 그외
- 제목과 본문을 나누는 방법은 이렇게 두 방식으로 해볼 수 있다.
$ git commit -m"[LTC]136. Single Number / easy
https://leetcode.com/problems/single-number/"
혹은
$ git commit -m"[PGS]신규 아이디 추천 / Lv.1" -m"https://school.programmers.co.kr/learn/courses/30/lessons/72410"
- push는 Fork 해온
origin
원격 저장소의 브랜치에 push한다.
git push [Fork한 원격 저장소명] [브랜치명]
// 예시
$git push origin ethan
- 이후 커밋 히스토리에서 원본 원격 저장소에 변경사항이 있다면 Fork한 내 로컬 저장소에도 똑같이 반영시켜야한다.
- 저장소의 카테고리에
Pull Requests
를 들어가서New pull request
를 선택한다. - Fork 한 저장소에서 원본 저장소로 PR을 보낼 때, 충돌 관련 내용을 체크하고
Create pull request
버튼을 누른다. - PR 양식에 맞추어 PR 제목과 내용, 그리고 우측에 있는 라벨도 등록한 후
Create pull request
를 진행한다. head repository : fork한 내 저장소
+compare : 내 닉네임으로 된 branch
→ base repository: 원본 저장소
+ base : main
- 닉네임 / 주차 / 푼 문제 갯수
- 예시)
Ethan / 1월 1주차 / 5문제
- 문제 출처
- input 과 output 설명
- 풀이 과정 (아이디어)
- 본문에 코멘트는 반드시 양식을 따를 필요 없이 자유로 작성해도 상관 없으나, 다른 리뷰어가 참고하기도 좋고, 문제에 대한 회고를 작성한다면 개인에게도 도움이 된다.
- PR을 생성하고 난 후 해당 라벨에 대한 설정을 해준다.
assignee
: 내 아이디를 추가한다.reviewer
: 작성자가 이미 문제를 푼 사람을 지정하거나 혹은 리뷰를 진행하려는 사람이 추가한다.
- 일요일 저녁 9시에 코드 리뷰 진행 후, 일괄적으로 Merge를 진행한다.
- 현재 Merge는 1명 이상으로부터
Approve
+ 리뷰를 받아야하며, 이 권한은 모두에게 있다. - Merge 이후에 로컬(내 PC)에 업데이트를 반영해야하기 때문에
git pull upstream main
을 통해 작업하던 브랜치에 merge 한 전체 변경 사항을 모두 받아온다. fork
한 원격 저장소 역시 github 사이트에 들어가서 최신 버전으로 반영하기 위한 버튼을 선택해서 업데이트를 반영한다.
- 다른 사람의 Pull Request (PR)을 보고 자유롭게 코드리뷰를 진행한다.
- 아래와 같은 플래그를 이용해서 코멘트를 달면 상대방의 기분을 상하지 않게 의도를 좀 더 잘 전달할 수 있다.
- 의견 제시
- 잘했다고 생각하는 부분
- 이렇게 하면 더 좋을 것 같다고 생각하는 부분
- 왜 이렇게 풀었는지 궁금한 부분
- 또 다른 풀이 방식을 제시
- 코드의 일부분 혹은 전체 코드 아래에 코멘트를 작성하는 리뷰 어느쪽이든 상관 없다.
- File Changes를 통해 승인 및 리뷰를 달 수 있으며, 각 파일의 + 버튼을 통해서 코드 단에 영역을 정해서 달 수도 있다.