Skip to content

moon201595/oss_git_example

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

501 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

์˜คํ”ˆ์†Œ์Šค์†Œํ”„ํŠธ์›จ์–ด ๊ฐ•์˜ ๋‚ด์šฉ ์ •๋ฆฌ by 201595 ๋ฌธ์ค€ํ˜

์˜คํ”ˆ์†Œ์Šค ๋กœ๊ณ 

์ „๋‚จ๋Œ€ํ•™๊ต ์ธ๊ณต์ง€๋Šฅํ•™๋ถ€ 2025ํ•™๋…„๋„ 2ํ•™๊ธฐ ์˜คํ”ˆ์†Œ์Šค์†Œํ”„ํŠธ์›จ์–ด(SAI0003-2) ๊ฐ•์˜ ์š”์•ฝ ๋ฐ ํ•™์Šต ์ •๋ฆฌ


โ™ง ๊ฐ•์˜ ๊ฐœ์š”

๊ต๊ณผ๋ชฉ๋ช…: ์˜คํ”ˆ์†Œ์Šค์†Œํ”„ํŠธ์›จ์–ด(SAI0003-2) ๋‹ด๋‹น๊ต์ˆ˜: ์ตœ๊ด‘ํ›ˆ ๊ฐ•์˜์‹œ๊ฐ„: ํ™”1๋ชฉ1 ๊ฐ•์˜์‹ค: AI์œตํ•ฉ-301 ํ•™์ : 3.0

โ™ง ์ˆ˜์—… ๋ชฉํ‘œ ๋ฐ ์—ญ๋Ÿ‰

์ด ๊ณผ๋ชฉ์€ 3๊ฐ€์ง€ ๋ชฉํ‘œ๋ฅผ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค:

  1. ์˜คํ”ˆ์†Œ์Šค์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๊ธฐ์ดˆ
    • ์†Œ์Šค์ฝ”๋“œ ๋ฒ„์ „ ์ปจํŠธ๋กค
    • ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ
    • ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ
  2. ์• ์ž์ผ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก 
    • ์ง ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    • ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ
    • ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ๋ฐ๋ธŒ์˜ต์Šค
  3. ์ž๊ธฐ์ฃผ๋„ ํ•™์Šต ๋Šฅ๋ ฅ
    • ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœํ™˜๊ฒฝ ์ ์‘
    • ํ˜‘๋ ฅ์  ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์ฃผ๋„
์—ญ๋Ÿ‰ ์„ธ๋ถ€ ๋ชฉํ‘œ
์ปดํ“จํŒ…์‚ฌ๊ณ  ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์Šคํƒ€์ผ ์ตํžˆ๊ธฐ
์œตํ•ฉ LLM/ChatGPT๋ฅผ ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•™์Šต์— ํ™œ์šฉ
๊ธ€๋กœ์ปฌ Git/Github๋ฅผ ํ†ตํ•œ ํ˜‘์—… ๋ฐฉ์‹ ํ•™์Šต
๋ฌธ์ œํ•ด๊ฒฐ๋Šฅ๋ ฅ ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ๋„๊ตฌ ์Šต๋“

โ™ง ์ˆ˜์—… ๋ฐฉ๋ฒ•

ํ”Œ๋ฆฝ๋Ÿฌ๋‹ ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰:

  • ์‚ฌ์ „ ๋™์˜์ƒ ํ•™์Šต
  • ๋งค ๊ฐ•์˜ ์‹œ์ž‘ ์‹œ 10๋ถ„ ํ€ด์ฆˆ
  • ์š”์•ฝ ๊ฐ•์˜ ๋ฐ ์—ฐ์Šต๋ฌธ์ œ ํ’€์ด

โ™ง ํ‰๊ฐ€ ๋ฐฉ๋ฒ•

  • ์ค‘๊ฐ„๊ณ ์‚ฌ: 30%
  • ๊ธฐ๋ง๊ณ ์‚ฌ: 40%
  • ๊ฐœ๋ณ„๊ณผ์ œ: 20%
  • ์ˆ˜์—…์ฐธ์—ฌ๋„: 10%

์ฐธ๊ณ : ๋ชจ๋“  ์‹œํ—˜์€ ์ง€ํ•„๊ณ ์‚ฌ๋กœ ์ง„ํ–‰๋˜๋ฉฐ, ๊ฐœ๋ณ„๊ณผ์ œ๋Š” ์ฃผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณผ์ œ์ž…๋‹ˆ๋‹ค.

โ™ง ์ฃผ์š” ๊ต์žฌ

  • ์ฃผ๊ต์žฌ: ๋ณ„๋„ ๊ต์žฌ ์—†์ด ๊ฐ•์˜ ์ž๋ฃŒ ์‚ฌ์ „ ๋ฐฐํฌ
  • ๋ถ€๊ต์žฌ: Haskell MOOC - Joel Kaasinen & John Lang
  • ์ฐธ๊ณ ์ž๋ฃŒ: YouTube ๊ฐ•์˜



Week 1-2: ์˜คํ”ˆ์†Œ์Šค์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ์š”

โ™ง ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด ์ •์˜

์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด๋ž€ ์†Œํ”„ํŠธ์›จ์–ด ์ €์ž‘๊ถŒ ์†Œ์œ ์ž๊ฐ€ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฒŒ์‹œ, ์‚ฌ์šฉ, ๋ณต์‚ฌ, ์ˆ˜์ • ๋ฐ ๋ฐฐํฌํ•  ๊ถŒ๋ฆฌ๋ฅผ ๋ถ€์—ฌํ•œ ์†Œํ”„ํŠธ์›จ์–ด.

โ™ง ์ƒ์šฉ SW vs ์˜คํ”ˆ์†Œ์Šค SW ๋น„๊ต

์ฃผ์š” ์ฐจ์ด์ 

  • ๋ผ์ด์„ ์Šค ๋ฐฉ์‹ - ์ƒ์šฉ SW: ๊ฐœ๋ณ„ ์ด์šฉํ—ˆ๋ฝ (EULA) - OSS: ์ผ๊ด„ ์‚ฌ์ „ ์ด์šฉํ—ˆ๋ฝ
  • ๋น„์šฉ - ์ƒ์šฉ SW: ๋กœ์—ดํ‹ฐ ์ง€๊ธ‰ ํ•„์š” - OSS: ๋น„์šฉ ๋ถ€๋‹ด โ†’ ๋ฌด๋ฃŒ
  • ์†Œ์Šค์ฝ”๋“œ - ์ƒ์šฉ SW: ๋ฐ”์ด๋„ˆ๋ฆฌ๋งŒ ์ œ๊ณต - OSS: ์†Œ์Šค์ฝ”๋“œ ๊ณต๊ฐœ
  • ์ˆ˜์ • ๊ถŒํ•œ - ์ƒ์šฉ SW: ๋ณต์ œ, ๋ฐฐํฌ, ์ˆ˜์ • ๋ถˆ๊ฐ€ - OSS: ๋ณต์ œ, ๋ฐฐํฌ, ์ˆ˜์ • ํ—ˆ์šฉ
๊ตฌ๋ถ„ ์ƒ์šฉ ์†Œํ”„ํŠธ์›จ์–ด ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด
๋ผ์ด์„ ์Šค ๊ฐœ๋ณ„ ์ด์šฉํ—ˆ๋ฝ(EULA) ์ผ๊ด„ ์‚ฌ์ „ ์ด์šฉํ—ˆ๋ฝ
๋น„์šฉ ๋กœ์—ดํ‹ฐ ์ง€๊ธ‰ ๋ฌด๋ฃŒ
์†Œ์Šค์ฝ”๋“œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋งŒ ์ œ๊ณต ์†Œ์Šค์ฝ”๋“œ ๊ณต๊ฐœ
์ˆ˜์ •๊ถŒํ•œ ์ˆ˜์ • ๋ถˆ๊ฐ€ ์ˆ˜์ • ํ—ˆ์šฉ

โ™ง ์ฃผ์š” ๊ธฐ์—…์˜ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ

๊ธ€๋กœ๋ฒŒ ๊ธฐ์—…๋“ค์˜ OSS ๊ธฐ์—ฌ:

โ™ง ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด์„ ์Šค ๋น„๊ต

์ฃผ์š” ๋ผ์ด์„ ์Šค๋ณ„ ํŠน์ง•

๋ผ์ด์„ ์Šค ์ƒ์šฉSW ์—ฐ๋™ ์ˆ˜์ •์‹œ ๊ณต๊ฐœ์˜๋ฌด ํŠนํ—ˆ๋ณดํ˜ธ
GPL 2.0 โŒ โœ… โŒ
LGPL โœ… โœ… โŒ
MIT/BSD โœ… โŒ โŒ
Apache 2.0 โœ… โœ… โœ…
MPL 1.0/1.1 โœ… โœ… โœ…

๋ผ์ด์„ ์Šค ํŠน์ง• ์ƒ์„ธ

  1. GPL (GNU General Public License)
    • ๊ฐ•๋ ฅํ•œ ์นดํ”ผ๋ ˆํ”„ํŠธ
    • GPL ์ฝ”๋“œ์™€ ๋งํฌ๋œ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์ „์ฒด๊ฐ€ GPL์„ ๋”ฐ๋ผ์•ผ ํ•จ
  2. LGPL (GNU Lesser General Public License)
    • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ˆ˜์ค€์—์„œ ๋งํฌ ํ—ˆ์šฉ
    • ์ˆ˜์ •ํ•œ ๋ถ€๋ถ„๋งŒ ๊ณต๊ฐœํ•˜๋ฉด ๋จ
  3. MIT/BSD License
    • ๋งค์šฐ ์ž์œ ๋กœ์šด ๋ผ์ด์„ ์Šค
    • ์ƒ์—…์  ์ด์šฉ ๊ฐ€๋Šฅ



Week 2-1: ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ฐœ์š”

โ™ง ์™œ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•œ ์ด์œ 

๋ฒ„์ „ ๊ด€๋ฆฌ ์—†์ด ์ž‘์—…ํ•˜๋ฉด:

  • ๋‹จ์ˆœ ๋ฐฑ์—… ๋ณต์‚ฌ๋ณธ ์ƒ์„ฑ (ํŒŒ์ผ๋ช…_v1.doc, ํŒŒ์ผ๋ช…_v2.doc)
  • ํŒŒ์ผ๋ช…์— ๋ฒ„์ „ ๋ฒˆํ˜ธ๋‚˜ ๋‚ ์งœ ์ถ”๊ฐ€
  • ๊ณต์œ  ํด๋”์—์„œ ๋™์‹œ ํŽธ์ง‘์œผ๋กœ ์ธํ•œ ์ถฉ๋Œ

๋ฌธ์ œ์ : ํŒŒ์ผ ์ถฉ๋Œ, ๋ณ€๊ฒฝ ์ด๋ ฅ ์ถ”์  ์–ด๋ ค์›€

โ™ง VCS (Version Control System)์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ

  1. ์ฒดํฌ์ธ/์ฒดํฌ์•„์›ƒ: ํŒŒ์ผ ์ˆ˜์ • ์ด๋ ฅ ๊ด€๋ฆฌ
  2. ๋ธŒ๋žœ์น˜: ๋ณ„๋„ ๊ฐœ๋ฐœ ๋ผ์ธ ์ƒ์„ฑ
  3. ๋จธ์ง€: ๋ธŒ๋žœ์น˜ ๊ฐ„ ๋ณ€๊ฒฝ์‚ฌํ•ญ ํ†ตํ•ฉ
  4. ์ถฉ๋Œ ํ•ด๊ฒฐ: ๋™์‹œ ์ˆ˜์ • ์‹œ ์ถฉ๋Œ ์ฒ˜๋ฆฌ
  5. ํƒœ๊น…: ํŠน์ • ๋ฒ„์ „์— ๋ผ๋ฒจ ๋ถ€์—ฌ (Release 1.0)

โ™ง VCS ์ข…๋ฅ˜ ๋น„๊ต

์ค‘์•™์ง‘์ค‘์‹ VCS

  • ํŠน์ง•: ํ•˜๋‚˜์˜ ์ค‘์•™ ์ €์žฅ์†Œ
  • ์˜ˆ์‹œ: CVS, SVN
  • ์žฅ์ : ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ, ๊ด€๋ฆฌ ์šฉ์ด
  • ๋‹จ์ : ์ค‘์•™ ์„œ๋ฒ„ ์˜์กด์„ฑ, ์˜คํ”„๋ผ์ธ ์ž‘์—… ์ œํ•œ

๋ถ„์‚ฐํ˜• VCS

  • ํŠน์ง•: ๊ฐœ๋ณ„ ๋กœ์ปฌ ์ €์žฅ์†Œ ๋ณด์œ 
  • ์˜ˆ์‹œ: Git, Mercurial, Darcs
  • ์žฅ์ : ์˜คํ”„๋ผ์ธ ์ž‘์—… ๊ฐ€๋Šฅ, ๋น ๋ฅธ ์†๋„
  • ์ถ”๊ฐ€ ๊ธฐ๋Šฅ: fork, pull request

โ™ง VCS ์›Œํฌํ”Œ๋กœ์šฐ ์˜ˆ์‹œ

Joe์™€ Sue์˜ ํ˜‘์—… ์‹œ๋‚˜๋ฆฌ์˜ค:

  1. Joe์™€ Sue๊ฐ€ ๋™์ผํ•œ ํŒŒ์ผ r3๋ฅผ ์ฒดํฌ์•„์›ƒ
  2. Joe: -Eggs, +Cheese ์ˆ˜์ •
  3. Sue: -Eggs, +Hot Dog ์ˆ˜์ •
  4. Joe๊ฐ€ ๋จผ์ € ์ปค๋ฐ‹ํ•˜์—ฌ r4 ์ƒ์„ฑ
  5. Sue๋Š” ์ถฉ๋Œ๋กœ ์ธํ•ด ์ปค๋ฐ‹ ๋ถˆ๊ฐ€ โš ๏ธ

์ถฉ๋Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

  • Sue์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ Joe์˜ r4์— ์žฌ์ ์šฉ
  • Joe์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ Sue์˜ ๊ฒƒ์œผ๋กœ ๋ฎ์–ด์“ฐ๊ธฐ

์ถฉ๋Œ ํ•ด๊ฒฐ ๊ฐœ๋…๋„

โ™ง ํƒœ๊น… (Tagging)

ํŠน์ • ๋ฆฌ๋น„์ „์— ๋ผ๋ฒจ์„ ๋ถ€์—ฌํ•˜์—ฌ ์‰ฝ๊ฒŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ

  • ์˜ˆ์‹œ: r4 โ†’ Release 1.0
  • ์ค‘์š”ํ•œ ๋ฒ„์ „์ด๋‚˜ ๋งˆ์ผ์Šคํ†ค์— ์˜๋ฏธ์žˆ๋Š” ์ด๋ฆ„ ๋ถ€์—ฌ

โ™ง ์‹ค์ œ ์‚ฌ๋ก€: Windows ๊ฐœ๋ฐœ

Microsoft Windows Media Player 11๊ณผ Internet Explorer 7 ํ†ตํ•ฉ:

  • Forward Integration (FI): ๋ธŒ๋žœ์น˜์—์„œ ๋ฉ”์ธ์œผ๋กœ ํ†ตํ•ฉ
  • Reverse Integration (RI): ๋ฉ”์ธ์—์„œ ๋ธŒ๋žœ์น˜๋กœ ์—ญํ†ตํ•ฉ

FI์™€ RI ๊ฐœ๋…๋„




Week 2-2: Git

โ™ง Git ๊ฐœ๋ฐœ ๋ฐฐ๊ฒฝ

๊ฐœ๋ฐœ์ž: Linus Torvalds (Linux ์ปค๋„ ์ฐฝ์‹œ์ž) ๋ชฉ์ : Linux ์ปค๋„ ๊ณต๋™ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋„๊ตฌ ํŠน์ง•: ๋ถ„์‚ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

โ™ง Git์˜ 4๊ฐ€์ง€ ์˜์—ญ

  1. Workspace (์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ)
    • ์‹ค์ œ๋กœ ์ž‘์—… ์ค‘์ธ ํŒŒ์ผ๋“ค
  2. Index/Stage (์Šคํ…Œ์ด์ง• ์˜์—ญ)
    • ๋‹ค์Œ ์ปค๋ฐ‹์— ํฌํ•จ๋  ํŒŒ์ผ๋“ค
  3. Local Repository (๋กœ์ปฌ ์ €์žฅ์†Œ)
    • ๋กœ์ปฌ์— ์ปค๋ฐ‹๋œ ํŒŒ์ผ๋“ค
  4. Remote Repository (์›๊ฒฉ ์ €์žฅ์†Œ)
    • GitHub ๋“ฑ ์›๊ฒฉ ์„œ๋ฒ„์— ํ‘ธ์‹œ๋œ ํŒŒ์ผ๋“ค

Git์˜ 4๊ฐ€์ง€ ์˜์—ญ ๊ฐœ๋…๋„

โ™ง ์ฃผ์š” Git ๋ช…๋ น์–ด

์ €์žฅ์†Œ ์ดˆ๊ธฐํ™” ๋ฐ ๋ณต์ œ

git init # ๋กœ์ปฌ ์ €์žฅ์†Œ ์ดˆ๊ธฐํ™”
git clone <repository-url> # ์›๊ฒฉ ์ €์žฅ์†Œ ๋ณต์ œ

ํŒŒ์ผ ์ถ”๊ฐ€ ๋ฐ ์ปค๋ฐ‹

git add <filename> # ํŠน์ • ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง•
git add . # ๋ชจ๋“  ๋ณ€๊ฒฝ ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง•
git commit -m "๋ฉ”์‹œ์ง€" # ์ปค๋ฐ‹ ์ƒ์„ฑ
git commit -a # ์ˆ˜์ •๋œ ๋ชจ๋“  ํŒŒ์ผ ์ž๋™ add + commit

์›๊ฒฉ ์ €์žฅ์†Œ ์—ฐ๋™

git remote add origin <url> # ์›๊ฒฉ ์ €์žฅ์†Œ ์ถ”๊ฐ€
git push origin main # ๋กœ์ปฌ โ†’ ์›๊ฒฉ ์—…๋กœ๋“œ
git fetch origin # ์›๊ฒฉ โ†’ ๋กœ์ปฌ ๋‹ค์šด๋กœ๋“œ (๋ณ‘ํ•ฉ X)
git pull origin main # fetch + merge ๋™์‹œ ์‹คํ–‰

์ƒํƒœ ๋ฐ ์ด๋ ฅ ํ™•์ธ

git status # ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ
git log # ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ ํ™•์ธ
git diff # ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋น„๊ต
git diff HEAD # ์›Œํฌ์ŠคํŽ˜์ด์Šค์™€ ์ตœ์‹  ์ปค๋ฐ‹ ๋น„๊ต

โ™ง Git ์›Œํฌํ”Œ๋กœ์šฐ ์ƒ์„ธ

๋‹จ๊ณ„๋ณ„ ๋ฐ์ดํ„ฐ ํ๋ฆ„:

  1. git clone - ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋กœ์ปฌ๋กœ ๋ณต์ œ
  2. git add - ์›Œํฌ์ŠคํŽ˜์ด์Šค์—์„œ ์Šคํ…Œ์ด์ง• ์˜์—ญ์œผ๋กœ
  3. git commit - ์Šคํ…Œ์ด์ง• ์˜์—ญ์—์„œ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ
  4. git push - ๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ
  5. git fetch - ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ (๋ณ‘ํ•ฉ X)
  6. git merge - ๊ฐ€์ ธ์˜จ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ
  7. git pull - fetch + merge๋ฅผ ํ•œ ๋ฒˆ์— ์‹คํ–‰

Git์˜ 4๊ฐ€์ง€ ์›Œํฌํ”Œ๋กœ์šฐ ๊ฐœ๋…๋„




Week 2-3: GitHub, Fork, Pull Request

โ™ง GitHub๋ž€?

GitHub์€ Git ๊ธฐ๋ฐ˜์˜ ์†Œ์…œ ์ฝ”๋”ฉ์„ ์œ„ํ•œ ์†Œ์Šค์ฝ”๋“œ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ:

  • Fork, Pull Request, Code Review ๊ธฐ๋Šฅ
  • Issue ์ถ”์  ๋ฐ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ
  • ํ˜‘์—…์„ ์œ„ํ•œ ์†Œ์…œ ๋„คํŠธ์›Œํ‚น

โ™ง Fork & Pull Request ์›Œํฌํ”Œ๋กœ์šฐ

ํ˜‘์—… ๊ณผ์ • (6๋‹จ๊ณ„)

  1. Fork: ์›๋ณธ ์ €์žฅ์†Œ๋ฅผ ๋‚ด ๊ณ„์ •์œผ๋กœ ๋ณต์‚ฌ
  2. Clone: Forkํ•œ ์ €์žฅ์†Œ๋ฅผ ๋กœ์ปฌ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ
  3. Branch: ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
  4. Commit: ๋กœ์ปฌ์—์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ปค๋ฐ‹
  5. Push: Forkํ•œ ์ €์žฅ์†Œ์— ๋ณ€๊ฒฝ์‚ฌํ•ญ ์—…๋กœ๋“œ
  6. Pull Request: ์›๋ณธ ์ €์žฅ์†Œ์— ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ œ์•ˆ

Fork & Pull Request ๊ฐœ๋…๋„

์‹ค์ œ ํ˜‘์—… ์‹œ๋‚˜๋ฆฌ์˜ค

1.Forkํ•œ ์ €์žฅ์†Œ ํด๋ก 

git clone https://github.com/๋‚ด์•„์ด๋””/oss_git_example.git

2.์›๋ณธ ์ €์žฅ์†Œ๋ฅผ upstream์œผ๋กœ ์ถ”๊ฐ€

git remote add upstream https://github.com/kwanghoon/oss_git_example.git

3.์ตœ์‹  ๋ณ€๊ฒฝ์‚ฌํ•ญ ๊ฐ€์ ธ์˜ค๊ธฐ

git fetch upstream

4.์ถฉ๋Œ ํ•ด๊ฒฐ ํ›„ ๋ฆฌ๋ฒ ์ด์Šค

git rebase upstream/main

5.๋‚ด Fork์— ํ‘ธ์‹œ

git push origin main

โ™ง ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฌธํ™”

Pull Request์˜ ์žฅ์ :

  • ์ฝ”๋“œ ํ’ˆ์งˆ ํ–ฅ์ƒ: ๋™๋ฃŒ ๊ฒ€ํ† ๋ฅผ ํ†ตํ•œ ๋ฒ„๊ทธ ๋ฐœ๊ฒฌ
  • ์ง€์‹ ๊ณต์œ : ํŒ€์› ๊ฐ„ ๊ธฐ์ˆ  ๋ฐ ๋„๋ฉ”์ธ ์ง€์‹ ๊ณต์œ 
  • ํ‘œ์ค€ํ™”: ์ผ๊ด€๋œ ์ฝ”๋”ฉ ์Šคํƒ€์ผ ์œ ์ง€

๋ฆฌ๋ทฐ ๋ฐฉ๋ฒ•:

  • ๋ผ์ธ๋ณ„ ๋Œ“๊ธ€์„ ํ†ตํ•œ ๊ตฌ์ฒด์  ํ”ผ๋“œ๋ฐฑ
  • ์ „์ฒด์ ์ธ ์„ค๊ณ„ ๋ฐ ์•„ํ‚คํ…์ฒ˜ ๊ฒ€ํ† 
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฐ ๋ฌธ์„œํ™” ํ™•์ธ

โ™ง ์‹ค์Šต ์˜ˆ์ œ: oss_git_example

๊ณผ์ œ: https://github.com/kwanghoon/oss_git_example์„ forkํ•˜์—ฌ ๋ณธ์ธ์˜ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๊ณ , ์ด๋ฅผ ๋กœ์ปฌ๋กœ ๊ฐ€์ ธ์™€ ์ˆ˜์ •ํ•œ ๋‹ค์Œ ๋‹ค์‹œ ์˜ฌ๋ฆฐ ํ›„ kwanghoon์˜ ์ €์žฅ์†Œ์— pull request

ํ˜‘์—… ํ›„ ๋™๊ธฐํ™” ๋ฐฉ๋ฒ•

๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋‚ด ์ €์žฅ์†Œ์— ๋ฐ˜์˜:

1. git remote add pb https://github.com/kwanghoon/oss_git_examples
2. git fetch pb
3. git diff pb/master # ์ถฉ๋Œ ํ™•์ธ
4. git rebase pb/master
5. git commit -a -m "merge 3rd party contributions"
6. git push origin master



Week 2-4: Git Advanced Topics

โ™ง Rebase vs Merge

Merge ๋ฐฉ์‹

A---B---C topic
/
D---E---F---G main
  • ๋ธŒ๋žœ์น˜๋“ค์„ ํ†ตํ•ฉํ•˜๋ฉฐ ๋จธ์ง€ ์ปค๋ฐ‹(G) ์ƒ์„ฑ
  • ๊ธฐ์กด ์ปค๋ฐ‹ ์ด๋ ฅ ์™„์ „ ๋ณด์กด
  • ๋ณต์žกํ•œ ๊ทธ๋ž˜ํ”„ ํ˜•ํƒœ์˜ ํžˆ์Šคํ† ๋ฆฌ

Rebase ๋ฐฉ์‹

A---B---C topic
/
D---E---F main
  โ†“ git rebase main

    A'--B'--C' topic
           /
D---E---F main
  • ์ปค๋ฐ‹๋“ค์„ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ์„ ํ˜• ์ด๋ ฅ ์ƒ์„ฑ
  • ๊น”๋”ํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฌ์šด ํ”„๋กœ์ ํŠธ ํžˆ์Šคํ† ๋ฆฌ
  • ์ฃผ์˜: ๊ณต์œ ๋œ ์ปค๋ฐ‹์€ ๋ฆฌ๋ฒ ์ด์Šค ๊ธˆ์ง€!

โ™ง ๊ณ ๊ธ‰ Git ๋ช…๋ น์–ด

์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋ฆฌ๋ฒ ์ด์Šค

git rebase -i HEAD~3 # ์ตœ๊ทผ 3๊ฐœ ์ปค๋ฐ‹ ์ˆ˜์ •

pick โ†’ edit, squash, drop ๋“ฑ์œผ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

ํŠน์ • ํŒŒ์ผ ๋ณ€๊ฒฝ ์ด๋ ฅ ์ถ”์ 

git blame filename.c # ๊ฐ ์ค„์˜ ์ตœ์ข… ์ˆ˜์ •์ž ํ™•์ธ
git log -p filename.c # ํŠน์ • ํŒŒ์ผ์˜ ์ƒ์„ธ ๋ณ€๊ฒฝ ์ด๋ ฅ

๋ณ€๊ฒฝ์‚ฌํ•ญ ์ž„์‹œ ๋ณด๊ด€

git stash # ํ˜„์žฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ž„์‹œ ์ €์žฅ
git stash list # ์ €์žฅ๋œ stash ๋ชฉ๋ก ํ™•์ธ
git stash pop # ๊ฐ€์žฅ ์ตœ๊ทผ stash ์ ์šฉ ๋ฐ ์‚ญ์ œ

โ™ง Git Flow ๋ธŒ๋žœ์น˜ ์ „๋žต

ํ‘œ์ค€ ๋ธŒ๋žœ์น˜ ๊ตฌ์กฐ:

  • main/master: ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์•ˆ์ • ๋ฒ„์ „
  • develop: ๊ฐœ๋ฐœ ์ง„ํ–‰ ์ค‘์ธ ๋ธŒ๋žœ์น˜
  • feature/๊ธฐ๋Šฅ๋ช…: ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜
  • release/๋ฒ„์ „: ๋ฐฐํฌ ์ค€๋น„ ๋ธŒ๋žœ์น˜
  • hotfix/๋ฒ„๊ทธ๋ช…: ๊ธด๊ธ‰ ์ˆ˜์ • ๋ธŒ๋žœ์น˜

๋ธŒ๋žœ์น˜ ์ „๋žต ์›Œํฌํ”Œ๋กœ์šฐ

main โ”€โ”€โ—โ”€โ”€โ”€โ”€โ—โ”€โ”€โ”€โ”€โ—โ”€โ”€โ”€โ”€โ—โ”€โ”€
โ•ฒ โ•ฑ โ•ฑ
develop โ”€โ”€โ”€โ—โ”€โ”€โ—โ”€โ”€โ—โ”€โ”€โ—โ”€โ”€โ—โ”€โ”€โ”€
โ•ฑ โ•ฒ
feature/A โ—โ”€โ—โ”€โ—โ”€โ— โ•ฒ
โ•ฑ
feature/B โ—โ”€โ—โ”€โ—

โ™ง Git ๊ณ ๊ธ‰ ๋ฌธ์ œ ํ•ด๊ฒฐ

์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ˆ˜์ •

git commit --amend # ์ง์ „ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ˆ˜์ • git rebase -i HEAD~3 # ์—ฌ๋Ÿฌ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ˆ˜์ •

์‹ค์ˆ˜๋กœ ์ปค๋ฐ‹ํ•œ ํŒŒ์ผ ์ œ๊ฑฐ

git reset --soft HEAD1 # ์ปค๋ฐ‹ ์ทจ์†Œ, ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ณด์กด git reset --hard HEAD1 # ์ปค๋ฐ‹ ๋ฐ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์™„์ „ ์‚ญ์ œ (์ฃผ์˜)

์ปค๋ฐ‹ ๋˜๋Œ๋ฆฌ๊ธฐ vs ์žฌ์„ค์ •

  • git reset: ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝ (์œ„ํ—˜)
  • git revert: ์ด์ „ ์ปค๋ฐ‹์„ ์ทจ์†Œํ•˜๋Š” ์ƒˆ๋กœ์šด ์ปค๋ฐ‹ ์ƒ์„ฑ (์•ˆ์ „)

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ๋“ค๊ณผ ๊ฐ„๋‹จํ•œ ๋‹ต๋ณ€

  1. Git๊ณผ Github์˜ ์ฐจ์ด๋Š”?
    • Git์€ ๊ฐ ์ปดํ“จํ„ฐ(local)์— ์„ค์น˜๋˜์–ด ์†Œ์Šค์ฝ”๋“œ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ
    • Github๋Š” remote ์ €์žฅ์†Œ๊ฐ€ ์žˆ๋Š” ์™ธ๋ถ€์„œ๋ฒ„๋ฅผ ์ง€์นญ
  2. Commit๊ณผ Pushd์˜ ์ฐจ์ด๋Š”?
    • commit์€ local ์ž‘์—…ํด๋”์— history๋ฅผ ์Œ“๋Š” ๊ฒƒ์ด์–ด์„œ ์™ธ๋ถ€๋ง์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
    • push๋Š” remote ์ €์žฅ์†Œ์— history๋ฅผ ์Œ“๋Š” ๊ฒƒ์ด์–ด์„œ ์™ธ๋ถ€๋ง์ด ํ•„์š”ํ•จ
  3. Fetch์™€ Pull์˜ ์ฐจ์ด๋Š”?
    • fetch๋Š” ๊ฐ€์ ธ์™€์„œ ์ž„์‹œํด๋”(.git)์— ์ €์žฅ
    • pull์€ ๋ฐ”๋กœ ํ˜„์žฌ branch์— merge ์ž‘์—…์„ ๋™๋ฐ˜ํ•จ
    • Remote ์ €์žฅ์†Œ๋กœ๋ถ€ํ„ฐ ์ตœ์‹  commit ์ •๋ณด๋“ค์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ ๋งคํ•œ๊ฐ€์ง€
  4. Rebase์™€ Merge์˜ ์ฐจ์ด๋Š”?
    • rebase๋Š” ํ•ฉ์น˜๊ธฐ ์ „์— ๋˜๊ฐ๊ธฐ(rewinding)๋ฅผ ํ•จ
    • merge๋Š” ๋˜๊ฐ๊ธฐ๋ฅผ ์•ˆํ•˜๊ณ  ํ•ฉ์นจ
    • ๋‘ branch์˜ ์ฐจ์ด์ (commits)๋ฅผ ํ•ฉ์น˜๋Š” ๊ฒƒ์€ ๋งคํ•œ๊ฐ€์ง€



Week 3: Markdown

โ™ง Markdown์ด๋ž€?

Markdown์€ ์กด ๊ทธ๋ฃจ๋ฒ„(John Gruber)์™€ ์•„๋ก  ์Šค์›Œ์ธ (Aaron Swartz)๊ฐ€ 2004๋…„์— ๊ฐœ๋ฐœํ•œ ๊ฒฝ๋Ÿ‰ ๋งˆํฌ์—… ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•:

  • ์ผ๋ฐ˜ ํ…์ŠคํŠธ ์—๋””ํ„ฐ๋กœ ์ž‘์„ฑ ๊ฐ€๋Šฅ
  • GitHub README ํŒŒ์ผ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ
  • HTML๋กœ ์‰ฝ๊ฒŒ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ
  • ๋ฐฐ์šฐ๊ธฐ ์‰ฝ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ํŽธํ•จ

โ™ง Markdown ์ฃผ์š” ๋ฌธ๋ฒ•

์ œ๋ชฉ (Headers)

# H1 ์ œ๋ชฉ (๊ฐ€์žฅ ํฐ ์ œ๋ชฉ)

## H2 ์ œ๋ชฉ (๋‘ ๋ฒˆ์งธ ํฌ๊ธฐ)

### H3 ์ œ๋ชฉ (์„ธ ๋ฒˆ์งธ ํฌ๊ธฐ)

#### H4 ์ œ๋ชฉ (๋„ค ๋ฒˆ์งธ ํฌ๊ธฐ)

๊ฐ•์กฐ (Emphasis)

  • ์ดํƒค๋ฆญ์ฒด: *์ดํƒค๋ฆญ์ฒด*
  • ๋ณผ๋“œ์ฒด: **๋ณผ๋“œ์ฒด**
  • ๋ณผ๋“œ ์ดํƒค๋ฆญ: ***๋ณผ๋“œ ์ดํƒค๋ฆญ***
  • ์ทจ์†Œ์„ : ~~์ทจ์†Œ์„ ~~

๋ชฉ๋ก (Lists)

  • ์ˆœ์„œ ์—†๋Š” ๋ชฉ๋ก (- ํ•ญ๋ชฉ)
  • ์ˆœ์„œ ์žˆ๋Š” ๋ชฉ๋ก (1. ํ•ญ๋ชฉ)
- ํ•ญ๋ชฉ 1
- ํ•ญ๋ชฉ 2
    - ํ•˜์œ„ ํ•ญ๋ชฉ 2-1
    - ํ•˜์œ„ ํ•ญ๋ชฉ 2-2
- ํ•ญ๋ชฉ 3

๋งํฌ ๋ฐ ์ด๋ฏธ์ง€

  • ๋งํฌ: [ํ…์ŠคํŠธ](https://example.com)
  • ์ด๋ฏธ์ง€: ![๋Œ€์ฒด ํ…์ŠคํŠธ](https://example.com/image.png)

์ธ์šฉ๋ฌธ (Blockquotes)

> ์ด๊ฒƒ์€ ์ธ์šฉ๋ฌธ์ž…๋‹ˆ๋‹ค.
> ์—ฌ๋Ÿฌ ์ค„์— ๊ฑธ์ณ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

> ์ค‘์ฒฉ ์ธ์šฉ๋ฌธ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ ๋ธ”๋ก

# ์—ฌ๋Ÿฌ ์ค„ ์ฝ”๋“œ ๋ธ”๋ก์€ backtick 3๊ฐœ๋กœ ๊ฐ์Œ‰๋‹ˆ๋‹ค.
git status
git log

ํ‘œ (Tables)

ํ•ญ๋ชฉ ๊ฐ€๊ฒฉ ์ˆ˜๋Ÿ‰
์‚ฌ๊ณผ 1000์› 10๊ฐœ
๋ฐ”๋‚˜๋‚˜ 1500์› 5๊ฐœ
์˜ค๋ Œ์ง€ 2000์› 8๊ฐœ

Editors

  • VSCode
    • Edit and preview(Ctrl + Shift + V)
  • StackEdit

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Ruby 100.0%