Background - oognuyh/algorithm-study GitHub Wiki

How to share problems to solve

  1. Click issue tab

  2. Click New Issue

  3. Click Get started next to the type of New problem issue

  4. Type a title and link

    1. Title should be as follows
    ${Algorithm Site + problem.no}
    
    • Alogrithm Sites
    • Baekjoon Online Judge(BOJ)
    • Programmers(P)
    • SW Expert Academy(SEA)
    • LeetCode(LC)
    • e.g. BOJ2480, LC1204, P1235645, SEA1044
    1. Link should be as follows
  5. Select todo label

  6. Click Submit new issue

Title

Link

### Link
${problem.link}

How to submit

Prerequisite

Fork

  • upstream์„ forkํ•˜์—ฌ ๋‚ด ์ €์žฅ์†Œ์— ์ถ”๊ฐ€ํ•œ๋‹ค.

Clone

git clone https://github.com/${github.username}/algorithm-study.git
  • origin์„ local๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.
git remote -v
  • ์—ฐ๊ฒฐ ์ƒํƒœ ํ™•์ธ
  • origin ๋ฐ upstream์ด ์ž˜ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
git remote add upstream https://github.com/oognuyh/algorithm-study.git
  • upstream ์ถ”๊ฐ€
git pull upstream master
  • upstream์˜ master branch๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ณ‘ํ•ฉ
  • pull ๋Œ€์‹  fetch & merge ๋ช…๋ น์–ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ

Push

git checkout -b ${issue.name}
  • local ์ €์žฅ์†Œ์— ${issue.name}์ด๋ผ๋Š” branch๋ฅผ ์ƒ์„ฑํ•˜๊ณ  master์—์„œ switchํ•œ๋‹ค.
git add ./${issue.name}/${github.username}.${file.extension}
git commit -m "solve ${issue.name} (#${issue.no})"
git push origin ${issue.name}
  • ํŒŒ์ผ๋ช…์€ ${github.username}.${file.extension}์œผ๋กœ ํ•  ๊ฒƒ
  • ํŒŒ์ผ์€ ${issue.name} ํด๋” ์•„๋ž˜์— ์œ„์น˜ํ•  ๊ฒƒ(e.g. BOJ2480/oognuyh.kt)
  • ์ฝ”๋“œ ๋‚ด package ๊ฒฝ๋กœ๋Š” ํ”„๋กœ์ ํŠธ ๋‚ด ๊ฒฝ๋กœ์™€ ๋™์ผ (e.g. package BOJ2480;)
  • java์˜ ๊ฒฝ์šฐ ํด๋ž˜์Šค ๋ช…์„ ${github.username}์œผ๋กœ ๋ณ€๊ฒฝํ•  ๊ฒƒ(e.g. class ${github.username} { ... ))
  • ${issue.name} ๋ฌธ์ œ๋ฅผ ํ’€๊ณ  ์ปค๋ฐ‹ ์–‘์‹์— ๋งž๊ฒŒ ์ž‘์„ฑ ํ›„ origin์˜ ${issue.name} branch๋กœ push
  • ํ•ด๋‹น ํŒŒ์ผ๋งŒ pushํ•  ๊ฒƒ

Pull Request

git pull upstream master
  • Pull Request๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— ์ตœ์‹  ์ƒํƒœ๋กœ ๋งŒ๋“ฆ
  • Github๋ฅผ ํ†ตํ•ด origin์˜ ${issue.name} branch๋ฅผ Pull ํ•ด๋‹ฌ๋ผ๊ณ  upstream์— ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
  • PR ์ƒ์„ฑ ์‹œ Reviewers ์„ ํƒ

Code Review

  • ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ›„ ์Šน์ธ์ด ๋˜๋ฉด upstream์˜ master branch์— ๋ณ‘ํ•ฉ๋จ
  • ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ›„ ํŒŒ์ผ ์ˆ˜์ •์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
git add ${changedFile(s)}
  • ์ˆ˜์ •์ด ๋๋‚˜๋ฉด ์ˆ˜์ •๋œ ํŒŒ์ผ ์Šคํ…Œ์ด์ง•
git commit -m "fix ${issue.name} (#${issue.no})
git push origin ${issue.name}
  • ์ปค๋ฐ‹ ํ›„ PR์„ ์š”์ฒญํ–ˆ๋˜ branch์— pushํ•˜๋ฉด ์•Œ์•„์„œ ๋ฐ˜์˜๋จ

  • ๋งŒ์•ฝ, ์˜คํƒ€ ๋“ฑ ์‹ค์ˆ˜๋กœ ์ด์ „ ์ปค๋ฐ‹์— ๋ฎ์–ด์”Œ์šฐ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๋Š” ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ๋”ฐ๋ฆ„

    git commit --amend
    git push -f origin ${issue.name}
    
    • ์ด์ „ ์ปค๋ฐ‹์ด push๊ฐ€ ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ•์ œ๋กœ branch์— pushํ•จ
    • push ํ›„ ์—๋””ํ„ฐ๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ ESC -> : -> wq! ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€๋กœ ์ €์žฅ๋˜๊ณ  ์ง„ํ–‰๋จ

Merge

  • upstream ์ €์žฅ์†Œ์˜ master branch์— ์ฝ”๋“œ๊ฐ€ ๋ณ‘ํ•ฉ ํ›„
git checkout master
  • local ์ €์žฅ์†Œ master branch๋กœ switch
git branch -D ${issue.name}
  • ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋˜ local ์ €์žฅ์†Œ์˜ branch ์‚ญ์ œ
git push origin --delete ${issue.name}
  • ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋˜ origin ์ €์žฅ์†Œ์˜ branch ์‚ญ์ œ
git pull upstream master
git push origin master
  • local ๋ฐ origin ์ €์žฅ์†Œ ์ตœ์‹ ํ™”
  • ์ƒˆ๋กœ์šด ๋ฌธ์ œ ์˜ฌ๋ผ์˜ค๋ฉด Push Step๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘