โ† Articles

๐Ÿ•๏ธ ์˜คํ”ˆ์†Œ์Šค ์ž…๋ฌธ์„ ์œ„ํ•œ ์•„์ฃผ ๊ตฌ์ฒด์ ์ธ ๊ฐ€์ด๋“œ

Table of Contents

์ž‘๋…„ ๊ฒจ์šธ๋ถ€ํ„ฐ ์˜คํ”ˆ์†Œ์Šค์— ๊ด€์‹ฌ์ด ์ƒ๊ฒจ ์ด๊ณณ์ €๊ณณ์— ์ด์Šˆ๋„ ์˜ฌ๋ฆฌ๊ณ  ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋„ ๋ณด๋‚ด๊ณ  ์žˆ๋‹ค. ์˜คํ”ˆ์†Œ์Šค ๊ธฐ์—ฌ์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ๋‚จ์˜ ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๊ณผ ๊ธฐ์ˆ  ํŠธ๋ Œ๋“œ๋ฅผ ๊ณ„์† ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜์ž‘ ์‹ค๋ ฅ๋„ ๋ฏธ์„ธํ•˜๊ฒŒ (โ€ฆ) ํ–ฅ์ƒ๋œ ๊ฒƒ ๊ฐ™๋‹ค. ์ฒ˜์Œ ์˜คํ”ˆ์†Œ์Šค ํ™œ๋™์„ ์‹œ์ž‘ํ•  ๋•Œ ๋„ค์ด๋ฒ„ ์˜คํ”ˆ์†Œ์Šค ๊ฐ€์ด๋“œ๊ฐ€ ํฐ ๋„์›€์ด ๋๋‹ค. ์˜คํ”ˆ์†Œ์Šค์— ๋Œ€ํ•œ ๊ฐ์€ ์žกํžˆ์ง€๋งŒ ์ƒ๊ฐ๋ณด๋‹ค ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ์ง„ ์•Š๋Š”๋‹ค.

Git์ด ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ์„ค์น˜ํ•˜๊ณ , GitHub์— ๊ฐ€์ž…๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ๊ฐ€์ž…ํ•˜๋„๋ก ํ•˜์ž. ๋งŒ์•ฝ ์ต์ˆ™์น˜ ์•Š๋‹ค๋ฉด ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” Git ์ž…๋ฌธ์„ ์–•๊ฒŒ๋ผ๋„ ์ฝ์–ด๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ๊นƒํ—ˆ๋ธŒ๋ง๊ณ  GitLab์ด๋‚˜ BitBucket๋„ ์žˆ๋Š”๋ฐ, ์—ญ์‹œ ๊นƒํ—ˆ๋ธŒ์˜ ๊ทœ๋ชจ๊ฐ€ ๊ฐ€์žฅ ํฌ๋‹ค.

๊ฐ„๋‹จํ•˜๊ฒŒ ์˜คํ”ˆ์†Œ์Šค ์ปจํŠธ๋ฆฌ๋ทฐ์…˜๊ณผ ๊ด€๋ จ๋œ ์šฉ์–ด๋ฅผ ์ •๋ฆฌํ•˜๋ฉด ์ด๋ ‡๋‹ค:

  • Repository: ์ฝ”๋“œ๋‚˜ ๋ฌธ์„œ๋ฅผ ๋น„๋กฏํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณณ์„ ๋งํ•˜๋ฉฐ, ํ”„๋กœ์ ํŠธ ๋‹จ์œ„๋กœ ๋งŒ๋“ ๋‹ค. ์›๊ฒฉ ์ €์žฅ์†Œ(Remote repository)๋Š” ๊นƒํ—ˆ๋ธŒ๊ฐ™์€ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค ์„œ๋ฒ„์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ์ €์žฅ์†Œ๋ฅผ ๋งํ•˜๊ณ , ๋กœ์ปฌ ์ €์žฅ์†Œ(Local repository)๋Š” ๊ฐœ์ธ ์ปดํ“จํ„ฐ์— ์žˆ๋Š” ์ €์žฅ์†Œ๋ฅผ ๋งํ•œ๋‹ค. ๊ทธ๋ƒฅ ๋ฆฌํฌ(repo)๋ผ๊ณ  ์ค„์—ฌ์“ฐ๊ธฐ๋„ ํ•œ๋‹ค.
  • Fork: ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•ด ๋‚ด ๊ณ„์ •์˜ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
  • Pull Request: ๋‚ด ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ €์žฅ์†Œ์— ๋ฐ˜์˜ํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณด๋‚ด๋ฉด ํ•ด๋‹น ์ €์žฅ์†Œ์˜ ๋ฉ”์ธํ…Œ์ด๋„ˆ(ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์‚ฌ๋žŒ)์ด ๋‚ด ์ž‘์—…์„ ๋ฐ˜์˜ํ• ์ง€ ๋ง์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. ํ’€ ๋ฆฌํ€˜, PR์ด๋ผ๊ณ  ์ค„์—ฌ๋งํ•œ๋‹ค.
  • Issue: ํ”„๋กœ์ ํŠธ์˜ ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ, ๊ธฐ๋Šฅ ์ œ์•ˆ, ์งˆ๋ฌธ ๋“ฑ์„ ๋งํ•˜๋ฉฐ, ๊นƒํ—ˆ๋ธŒ ์ €์žฅ์†Œ์—์„œ Issues ํƒญ์— ๋“ค์–ด๊ฐ€๋ฉด ๋‹ค์–‘ํ•œ ํ† ๋ก ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ”ญ ํ”„๋กœ์ ํŠธ ๊ณ ๋ฅด๊ธฐ

์ฒ˜์Œ ์˜คํ”ˆ์†Œ์Šค ์ƒํƒœ๊ณ„์— ๋“ค์–ด์„œ๋ฉด ์ผ๋‹จย ํ˜ผ๋ž€์Šค๋Ÿฝ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋‚œ๊ด€์€ย '์–ด๋–ค ํ”„๋กœ์ ํŠธ์— ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ํ•  ๊ฒƒ์ธ๊ฐ€?'์ธ๋ฐ, ๊ฐ€์žฅ ์ข‹์€ ๊ฒƒ์€ ์ž์‹ ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์— ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฑํžˆ ์‚ฌ์šฉ์ค‘์ธ ์˜คํ”ˆ์†Œ์Šค๊ฐ€ ์—†๊ณ , ์ผ๋‹จ ์ปจํŠธ๋ฆฌ๋ทฐ์…˜์„ ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ๊นƒํ—ˆ๋ธŒ์˜ Explore ํƒญ์ด๋‚˜ CodeTriage๋ฅผ ๋‘˜๋Ÿฌ๋ณด๋ฉด ์ž์‹ ์ด ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด์™€ ํ™˜๊ฒฝ์— ๋งž๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ์žฌ๋ฐŒ๋Š” ํ”„๋กœ์ ํŠธ๋“ค์ด ๋งŽ๋‹ค.

๊ผญ ์ค‘๋Œ€ํ•œ ๋ฒ„๊ทธ๋ฅผ ๊ณ ์น˜๊ฑฐ๋‚˜ ๊ธฐ๋Šฅ์„ ๊ฐœ์„ , ์ถ”๊ฐ€ํ•˜๋ ค ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ์‹ค์ œ๋กœ ์ „์ฒด ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ ๋น„์œจ ์ค‘ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฌธ์„œ์˜ ์˜คํƒ€๋ฅผ ๊ณ ์น˜๊ฑฐ๋‚˜ ๋ฒˆ์—ญํ•˜๋Š” ์ปจํŠธ๋ฆฌ๋ทฐ์…˜์˜ ๋น„์œจ์ด ๋” ๋†’๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋””์ž์ธ ์ž‘์—…์ด๋‚˜ ์˜๊ฒฌ ์ œ์‹œ๋„ ์ปจํŠธ๋ฆฌ๋ทฐ์…˜์ด๋‹ˆ๊นŒ ์ฝ”๋“œ ์ˆ˜์ •์— ์••๋ฐ•๋ฐ›์„ ํ•„์š”๋Š” ์—†๋‹ค.

๋ญ”๊ฐ€ ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ํ• ๋งŒํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐพ์•˜๋‹ค๋ฉด ๋จผ์ € ์ด์Šˆ ํƒญ์— ๋“ค์–ด๊ฐ€ ๋‚ด๊ฐ€ ํ•˜๋ ค๋Š” ์ž‘์—…์„ ์ด๋ฏธ ๋ˆ„๊ตฐ๊ฐ€ํ•˜๊ณ  ์žˆ์ง€ ์•Š์€์ง€ ํ™•์ธํ•ด๋ณธ๋‹ค. ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ๋”ฐ๋กœ ์—†๊ณ , ํ•˜๋ ค๋Š” ์ž‘์—…์ด ํ”„๋กœ์ ํŠธ์˜ ๋ฐฉํ–ฅ์ด๋‚˜ ๊ตฌ์กฐ์— ํฐ ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฐ”๋กœ ์ˆ˜์ • ์ž‘์—…์— ๋“ค์–ด๊ฐ€๋„ ๋œ๋‹ค. ๊ทธ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด ์ง์ ‘ ์ด์Šˆ๋ฅผ ์˜ฌ๋ ค์„œ ์˜๊ฒฌ์„ ๋ฐ›์•„๋ณด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ ๊ฐ€์ด๋“œ๋ฅผ ๋งˆ๋ จํ•ด๋‘๊ณ  ์žˆ์œผ๋‹ˆ ํ™•์ธํ•˜๊ธธ ๊ถŒํ•œ๋‹ค.

๐Ÿ“Œ ์ €์žฅ์†Œ ํฌํฌํ•˜๊ธฐ

์ปจํŠธ๋ฆฌ๋ทฐ์…˜์„ ํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ์˜ ์ €์žฅ์†Œ๋ฅผ ํฌํฌ(Fork)ํ•ด์„œ ๋‚ด ๊นƒํ—ˆ๋ธŒ ๊ณ„์ •์— ๋™์ผํ•œ ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ํ”„๋กœ์ ํŠธ์˜ ์›๋ณธ ์ €์žฅ์†Œ๋ฅผ ์•„๋ฌด๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ—ฌ๊ฒŒ์ดํŠธ๊ฐ€ ์—ด๋ฆด ๊ฒƒ์ด ๋ป”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—โ€ฆ

๋‚˜๋Š” TUI Editor๋ผ๋Š” ํ”„๋กœ์ ํŠธ์— ์ปจํŠธ๋ฆฌ๋ทฐ์…˜์„ ํ•˜๋ ค ํ•œ๋‹ค. ๋งจ ์˜ค๋ฅธ์ชฝ โ€˜Forkโ€™ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ž๋™์œผ๋กœ ์ €์žฅ์†Œ๊ฐ€ ๋ณต์‚ฌ๋œ๋‹ค. ๋งŒ์•ฝ ํŒŒ์ผ์ด ๋งŽ๊ณ  ์šฉ๋Ÿ‰์ด ํฌ๋‹ค๋ฉด ํฌํฌํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ์œ„ ๋ฉ”๋‰ด์— ๋Œ€ํ•ด ์ข€ ์‚ฌ์กฑ์„ ๋‹ฌ์ž๋ฉด, 'Watchโ€™๋Š” ์ €์žฅ์†Œ์—์„œ ์ผ์–ด๋‚˜๋Š” ํ™œ๋™์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ๋ฐ›์„ ๊ฒƒ์ธ์ง€ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๊ณ , 'Starโ€™๋Š” ์ €์žฅ์†Œ๋ฅผ ๋ถ๋งˆํฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์Šคํƒ€๋Š” ๋‹จ์ˆœํžˆ ๋ถ๋งˆํฌ ๊ธฐ๋Šฅ์„ ํ•˜์ง€๋งŒ, ํ”„๋กœ์ ํŠธ๋ฅผ ์‘์›ํ•œ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ํ”„๋กœ์ ํŠธ์˜ ์™„์„ฑ๋„์™€ ์ธ๊ธฐ์˜ ์ฒ™๋„(!)์ด๊ธฐ๋„ ํ•˜๋‹ค.

๐Ÿ’พ ์ €์žฅ์†Œ ํด๋ก ํ•˜๊ธฐ

์ €์žฅ์†Œ๋ฅผ ํด๋ก (Clone)ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์ œํ•ด ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ๊ฐ€์ ธ์˜ค๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ๊นƒํ—ˆ๋ธŒ์— ์žˆ๋Š” ์ €์žฅ์†Œ๋ฅผ ๋‹ค์šด๋ฐ›์•„์„œ ๋‚ด ์ปดํ“จํ„ฐ์— ์ €์žฅํ•œ๋‹ค๋Š” ์˜๋ฏธ๋‹ค.

๋จผ์ € โ€˜Clone or downloadโ€™ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ๋‚˜์˜ค๋Š” ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปดํ“จํ„ฐ์—์„œ ํ„ฐ๋ฏธ๋„์„ ์—ด์–ด์„œ clone ๋ช…๋ น์„ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

$ git clone https://github.com/nhnent/tui.editor.git

๊ทธ๋Ÿฌ๋ฉด ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ชจ๋“  ํŒŒ์ผ์ด ๋‹ด๊ธด ํด๋”๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

๐Ÿšง ์ž‘์—…ํ•˜๊ธฐ

์ด์ œ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•œ๋‹ค. ์ฝ”๋“œ๋ฅผ ๊ณ ์ณ๋„ ์ข‹๊ณ , ๋ฌธ์„œ๋ฅผ ์ˆ˜์ •ํ•ด๋„ ๋œ๋‹ค. ์ž‘์—… ๊ณต๊ฐ„์€ ๋กœ์ปฌ ์ €์žฅ์†Œ๋‹ˆ๊นŒ ๋งˆ์Œ๋Œ€๋กœ ํ•˜์ž!

๐Ÿ“ค ์ถ”๊ฐ€/์ปค๋ฐ‹/ํ‘ธ์‹œํ•˜๊ธฐ

๋ณ€๊ฒฝ ๋‚ด์šฉ์˜ ๋ฐ˜์˜์—๋Š” 3๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜๊ฒŒ ๋œ๋‹ค. ๋จผ์ € 1๋‹จ๊ณ„ ์ถ”๊ฐ€(Add)๋Š” ๋ณ€๊ฒฝํ•œ ๋‚ด์šฉ์„ ์Šคํ…Œ์ด์ง• ์˜์—ญ(Staging area)์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ๋งํ•˜๋ฉฐ, 2๋‹จ๊ณ„ ์ปค๋ฐ‹(Commit)์€ ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์žˆ๋Š” ๋‚ด์šฉ์„ ์ตœ์ข… ํ™•์ •ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๋‹ค.

$ git add *
$ git commit -m "Update README.md"

์ปค๋ฐ‹ํ•  ๋•Œ๋Š” ๋ณ€๊ฒฝ ๋‚ด์šฉ์— ๊ด€ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ฌ ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”์‹œ์ง€๋Š” ์ดํ›„ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•ด์ฃผ๋ฉฐ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋‚ด๊ฐ€ ์–ด๋–ค ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ–ˆ๋Š”์ง€ ์š”์•ฝํ•ด์„œ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์‹œ๋งํ•ด ์ž˜ ์จ์•ผ ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ข‹์€ git ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ 7๊ฐ€์ง€ ์•ฝ์†์„ ์ฝ์–ด๋ณด๊ธธ ๊ถŒํ•œ๋‹ค. ์ปค๋ฐ‹๊นŒ์ง€๋Š” ์•„์ง ์›๊ฒฉ์ €์žฅ์†Œ์— ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด ๋ฐ˜์˜๋˜์ง€ ์•Š์€ ์ƒํƒœ๋‹ค. ๋งˆ์ง€๋ง‰ 3๋‹จ๊ณ„๋กœ ํ‘ธ์‹œ(push)๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.

$ git push origin master

์ด์ œ ๋‚ด ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐ˜์˜๋๋‹ค. ํ•˜์ง€๋งŒ ์›๋ณธ ์ €์žฅ์†Œ์—๋Š” ์•„์ง ๋‚ด์šฉ์ด ๋ฐ˜์˜๋˜์ง€ ์•Š์•˜๋‹ค. ์—ฌ๊ธฐ๊นŒ์ง€๋Š” ์•„์ง ์ปจํŠธ๋ฆฌ๋ทฐ์…˜์„ ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

๐Ÿ“ฎ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ๋ณด๋‚ด๊ธฐ

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ(Pull request)๋Š” ์›๋ณธ ์ €์žฅ์†Œ์— ๋‚ด ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณด๋‚ด๋ฉด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฉ”์ธํ…Œ์ด๋„ˆ(Maintainer)๋“ค์ด ์ž‘์—… ๋‚ด์šฉ์„ ๊ฒ€ํ† ํ•˜๊ณ , ํ”„๋กœ์ ํŠธ์— ๋ฐ˜์˜ํ• ์ง€ ์•ˆ ํ• ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.

โ€˜Pull requestsโ€™ ํƒญ์—์„œ โ€˜New pull requestโ€™ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.

๋ฐ”๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์€ ๋ธŒ๋žœ์น˜ ์‚ฌ์ด์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์— ๊ด€ํ•œ ํ’€ ๋ฆฌํ€˜๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ๋‚˜๋Š” ์ €์žฅ์†Œ๋ฅผ ํฌํฌํ•ด์„œ ์ž‘์—…ํ–ˆ์œผ๋‹ˆ๊นŒ ์œ„์— ์žˆ๋Š” โ€˜compare across forksโ€™ ๋งํฌ๋ฅผ ๋ˆŒ๋Ÿฌ ์ €์žฅ์†Œ ์‚ฌ์ด์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์— ๊ด€ํ•œ ํ’€ ๋ฆฌํ€˜๋ฅผ ๋ณด๋‚ด๋„๋ก ํ•ด์ค€๋‹ค. ์šฐ์ธก์˜ 'head forkโ€™์—์„œ ๋‚ด๊ฐ€ ํฌํฌํ•ด์„œ ์ž‘์—…ํ•œ ๋ฆฌํฌ๋ฅผ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ธ€์„ ์“ฐ๋Š” ์—๋””ํ„ฐ๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ œ๋ชฉ์€ ๋ณ€๊ฒฝ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์š”์•ฝ์„ ์“ฐ๊ฑฐ๋‚˜ ๊ทธ๋ƒฅ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ๊ทธ๋Œ€๋กœ ์“ฐ๊ธฐ๋„ ํ•œ๋‹ค. ๋ฐ”๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์ด์—ˆ๋‹ค๋ฉด ๋”ฐ๋กœ ์„ค๋ช…์„ ์“ฐ์ง€ ์•Š์•„๋„ ๋˜๊ณ , ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด ๋ณต์žกํ•˜๋‹ค๋ฉด ์„ค๋ช…์„ ์“ด๋‹ค. ๋งŒ์•ฝ ๋‚ด๊ฐ€ ์ž‘์—…ํ•œ ๋‚ด์šฉ์— ๊ด€ํ•œ ๊ธฐ์กด ์ด์Šˆ๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ๋‹ค๋ฉด #1713์ฒ˜๋Ÿผ # ๋’ค์— ์ด์Šˆ ๋ฒˆํ˜ธ๋ฅผ ์ ์–ด ์ฐธ์กฐ๋ฅผ ๋‹ฌ์•„์ค€๋‹ค.

์ด ๋‹จ๊ณ„์—์„œ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ์™ ์ง€๋ชจ๋ฅผ ๋ถˆ์•ˆํ•จ์ด์—ˆ๋‹ค. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณด๋‚ด๋ฉด ๋ฉ”์ธํ…Œ์ด๋„ˆ๋“ค์—๊ฒŒ ์•Œ๋ฆผ์ด ๊ฐ€๊ณ , ๋‚ด ์ปจํŠธ๋ฆฌ๋ทฐ์…˜์€ ์™„์ „ํžˆ ๊ณต๊ฐœ๋œ๋‹ค. ์ผ๋‹จ ๋‚ด ์ฝ”๋“œ๋ฅผ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๋–จ๋ฆฐ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ด ์ปจํŠธ๋ฆฌ๋ทฐ์…˜์— ๋ถ€์ •์ ์ธ ๋ฆฌ๋ทฐ๊ฐ€ ์˜ฌ ๊ฒƒ ๊ฐ™์•„์„œ ๋ถˆ์•ˆํ•˜๊ธฐ๋„ ํ•˜๋‹ค. ๊ทธ๋ž˜๋„ ์ผ๋‹จ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. (ํŠน๋ณ„ํ•œ ์‚ฌ์ •์ด ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด) ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ ์ž์ฒด๋ฅผ ์‹ซ์–ดํ•˜๋Š” ์‚ฌ๋žŒ์€ ์—†๋‹ค.

๐Ÿ˜ด ๊ธฐ๋‹ค๋ฆฌ๊ธฐ

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋‚ ๋ฆฌ๊ณ ๋‚˜๋ฉด ๋ฉ”์ธํ…Œ์ด๋„ˆ๊ฐ€ ๋‚ด์šฉ์„ ํ™•์ธํ•˜๊ณ  ๋ณ‘ํ•ฉ(Merge)ํ•ด์ฃผ๊ธธ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. ๋ฉฐ์น ์ด ์ง€๋‚˜๋„ ๋‹ต์ด ์—†์„ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ๋ฉ”์ธํ…Œ์ด๋„ˆ๋ฅผ ์žฌ์ด‰ํ•˜์ง€๋Š” ๋ง์ž. ์˜คํ”ˆ์†Œ์Šค ์ปจํŠธ๋ฆฌ๋ทฐํ„ฐ๋“ค์€ ๋ณด๋žŒ์„ ๋จน๊ณ  ์‚ฌ๋Š” ์‚ฌ๋žŒ๋“ค์ด๊ณ , ๊ฐ์ž์˜ ๋ณธ์—…์ด ๋”ฐ๋กœ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋‹ค. ๊ทธ๋ƒฅ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ ๋‚ด ์š”์ฒญ์ด ๋ฌปํžŒ ๊ฒƒ ๊ฐ™๋‹ค๋ฉด @ParkSB์ฒ˜๋Ÿผ ๋Œ“๊ธ€๋กœ ํƒœ๊ทธํ•ด ์ •์ค‘ํ•˜๊ฒŒ ๋ฆฌ๋ทฐ๋ฅผ ์š”์ฒญํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์œ„ ์‚ฌ์ง„์€ Hyper๋ผ๋Š” ํ”„๋กœ์ ํŠธ์— ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณด๋‚ด๊ณ  ๋ฐ˜์˜๋œ ๊ฒƒ์ด๋‹ค. #2579๋กœ 2579๋ฒˆ ์ด์Šˆ์— ์ฐธ์กฐ๋ฅผ ๋‹ฌ์•˜๊ณ , ๋ณ‘ํ•ฉ ํ›„ ๋ฉ”์ธํ…Œ์ด๋„ˆ๊ฐ€ ํ’€ ๋ฆฌํ€˜๋ฅผ ๋‹ซ์•˜๋‹ค.

์Šฌํ”„์ง€๋งŒ ๋‚ด ์ž‘์—…์ด ๊ฑฐ์ ˆ๋  ์ˆ˜๋„ ์žˆ๋‹ค. ๋„ˆ๋ฌด ์ƒ์ฒ˜๋ฐ›์ง€ ๋ง๊ณ  ๋‹ค๋ฅธ ํ•  ์ผ์„ ์ฐพ์•„๋ณด์ž (โ€ฆ) ์™œ ๋ฐ˜์˜ํ•  ์ˆ˜ ์—†๋Š”์ง€ ์นœ์ ˆํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ๋Š” ๋ฉ”์ธํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ๋Š” ๋ฐ˜๋ฉด, ๋ง๋„ ์—†์ด ํ’€ ๋ฆฌํ€˜๋ฅผ ๋‹ซ์•„๋ฒ„๋ฆฌ๋Š” ๋ฉ”์ธํ…Œ์ด๋„ˆ๋„ ์žˆ๋‹ค. ๋„ค์ด๋ฒ„ ์˜คํ”ˆ์†Œ์Šค ์„ธ๋ฏธ๋‚˜์— ๊ฐ€์„œ ๋“ค์—ˆ๋˜ Outsider๋‹˜์˜ ๊ฐ•์—ฐ์— ๋”ฐ๋ฅด๋ฉด ์ด์Šˆ๋‚˜ ํ’€ ๋ฆฌํ€˜์— ๋‹ฌ๋ฆฐ ๋ผ๋ฒจ์„ ๋ณด๊ณ  ๋Œ€๋žต ๋ฉ”์ธํ…Œ์ด๋„ˆ๋“ค์˜ ์„ฑํ–ฅ์„ ๋Œ€๋žต ์ง์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ผ๋ฒจ์ด ๋งŽ์ด ๋‹ฌ๋ ค ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์˜ ๋ฉ”์ธํ…Œ์ด๋„ˆ๋“ค์€ ์นœ์ ˆํ•˜๋‹ค๊ณ โ€ฆ

๐Ÿ“ฅ ์ €์žฅ์†Œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ์œ ์ง€ํ•˜๊ธฐ

๋งŒ์•ฝ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ์— ์•ž์œผ๋กœ ๊ณ„์† ์ปจํŠธ๋ฆฌ๋ทฐ์…˜์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ํ•ด๋‹น ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์—…๋ฐ์ดํŠธ๋œ ๋‚ด์šฉ์„ ์ง€์†์ ์œผ๋กœ ๋ฐ›์•„๋ณผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋ฌผ๋ก  ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. TUI Editor์— ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ํ•˜๋Š” ๊ฒฝ์šฐ ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

$ git remote add upstream https://github.com/nhnent/tui.editor.git

์›๋ณธ ์ €์žฅ์†Œ๋ฅผ ์—…์ŠคํŠธ๋ฆผ(Upstream)์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์œ„ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด upstream์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์›๊ฒฉ ์ €์žฅ์†Œ๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค. ์—…๋ฐ์ดํŠธ๋œ ์›๋ณธ ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ์•„๋ž˜ ๋ช…๋ น์„ ์ž…๋ ฅํ•œ๋‹ค.

$ git fetch upstream
$ git checkout master
$ git merge upstream/master

fetch๋กœ upstream ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์™€์„œ merge ๋ช…๋ น์œผ๋กœ upstream ์ €์žฅ์†Œ์˜ master ๋ธŒ๋žœ์น˜ ๋‚ด์šฉ์„ ๋‚ด ๋กœ์ปฌ ์ €์žฅ์†Œ์— ๋ณ‘ํ•ฉํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•œ ๋ฒˆ์”ฉ fetch์™€ merge๋ฅผ ํ•ด์ฃผ๋ฉด ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

โ†

ES6 ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์˜ this์— ๊ด€ํ•˜์—ฌ

โ†’

๐Ÿฆ• ๊ณต๋ฃก์ฑ…์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ์šด์˜์ฒด์ œ Ch.8

Memory-Management Strategies

โ† Articles