π‘ μ΄ κΈμ μ€νμμ€ κΈ°μ¬ νλμ νννκ±°λ ν¬νννλ €λ λͺ©μ μ΄ μλλΌ μ€νμμ€ κΈ°μ¬ νλμ μ’ λ μ½κ² λ€κ°κ° μ μλλ‘ κ·Έ κ³Όμ μ λ¨μννμ¬ μμ±ν κΈμ λλ€.
μ°λ¦¬λ νμ¬ μ€νμμ€μ ννμ λ°λ μλμ μ΄κ³ μμ΅λλ€. μννΈμ¨μ΄ κ°λ° κ²½λ ₯μ΄ μμΌμλ‘ κ·Έλ¦¬κ³ μ€νμμ€ μνκ³μ κ°κΉμμ§μλ‘ μμ£Ό λ£κ±°λ νλ λ§μ΄ μμ΄ μμ΅λλ€.
μ€νμμ€μ κΈ°μ¬νμ.
(μ νλΈ μμνμ.)
λ¬Όλ‘ μ¬λλ§λ€ μ€νμμ€μ κΈ°μ¬νλ €λ μ΄μ λ λ€μν©λλ€.
μ€λ ₯μ ν₯μμν€κ±°λ νν/κ²½λ ₯μ ν€μΈ λͺ©μ μΌλ‘ ν μλ μκ³ λ€λ₯Έ μ¬λλ€κ³Ό κ΅λ₯νκΈ° μν΄μ μ°Έμ¬ν μ μμ΅λλ€.
μλλ©΄ λ¨μν κ°λ°μ΄ μ¦κ²κ³ μ€νμμ€ μΈκ³κ° ν₯λ―Έλ‘μμ κΈ°μ¬νλ μ¬λλ μμ΅λλ€.
κ·Έ λκΈ°κ° λ¬΄μμ΄ λμλ μ€νμμ€ μνκ³ λ°μ μ κΈ°μ¬νλ€λ κ²μ λ§€μ° μΉμ°¬ λ°μ μΌμ΄μ κ°μΈμ λ°μ μλ λμμ΄ λλ νλμ λλ€.
'μ€νμμ€ κΈ°μ¬'λΌκ³ κ²μνλ©΄ λ€μκ³Ό κ°μ κ²°κ³Όκ° λμ΅λλ€.
μ’μμ΄! μμν΄λ³΄μ...μΌλ¨ μ€νμμ€ κΈ°μ¬λ₯Ό μν΄μ νμν μ¬μ μ§μκ³Ό κΈ°μ¬ν μ μλ λ°©λ²λ€μ΄ κ²μ κ²°κ³Όλ‘ λμ΅λλ€.
μΌλ¨ gitμ 곡λΆν΄μΌ νλ€κ³ λμ€κ³ githubμμ κ°μ₯ λ§μ μ€νμμ€ νλ‘μ νΈκ° μ§νλκ³ μμΌλ githubμ μ΅μν΄μ ΈμΌ νλ€κ³ λμ΅λλ€.
κ·Έλ¦¬κ³ μ¬λ§ν μ€νμμ€λ€μ μμ΄λ‘ λμ΄ μμΌλ μμ΄ κ³΅λΆλ₯Ό νλ©΄ λ©λλ€... νμ...
λ¬Όλ‘ μμ μΈκΈν μ¬μ μ§μκ³Ό κΈ°μ¬λ°©λ²μ μ€νμμ€ κΈ°μ¬νλμ νλ λ°μ μ€μν μ§μΉ¨μ΄ λμ§λ§ μλ‘ μ μΈ μ¬λ‘κ° λ§λ€κ³ μκ°ν©λλ€.
μ’ κ³Όμ₯νλ©΄ μ§κ΅¬λ₯Ό μ§ν€κΈ° μν΄μ κΈΈμ μλ μ°λ κΈ° μ’ μ€κ³ λΆλ¦¬μκ±°λ₯Ό μ νλ κ±Έλ‘ μμνκ³ μΆμλ° λ§μΉ κΈ°νλ³νλ νκ²½μννκ³Ό κ΄λ ¨λ μλ£λ₯Ό μ°Ύμλ΄μΌν κ² κ°μ λλμ λλ€.
κ·Έλμ μ΄λ² 2021 μ€νμμ€ μ»¨νΈλ¦¬λ·°μ
μμΉ΄λ°λ―Έμ μ°Έμ¬νλ©΄μ λ°°μ΄ μ€νμμ€ κΈ°μ¬ λ°©λ²κ³Ό μμ μ΅μ΄(?)λ‘ githubλ‘ μ€νμμ€μ κΈ°μ¬ν κ²½νμ 곡μ νμ¬ μ’ μ½κ² νμ΄λ΄κ³ μ ν©λλ€. (μ€νμμ€ κΈ°μ¬ν μ° νΌλ€.)
μ λ νμΌλκΉ... μ¬λ¬λΆλ...
μΌ, λλ ν μ μμ΄- Fork: λ€λ₯Έ μ¬λμ μ격 μ μ₯μλ₯Ό κ·Έλλ‘ λ³΅μ¬ν΄ λ΄ κ³μ μ μ격 μ μ₯μλ‘ λ§λλ κ²μ μλ―Έ.
π΄Forkλ‘ μ§μ΄ κ°λ€. - Issue: λ²κ·Έ 리ν¬νΈ, κΈ°λ₯ μ μ, μ§λ¬Έ λ± νλ‘μ νΈλ₯Ό μ§ννλ©΄μ λ°μνλ λͺ¨λ μ΄μ
- Pull Request: λ΄ μ μ₯μμ λ³κ²½ λ΄μ©μ λ€λ₯Έ μ¬λμ μ μ₯μμ λ°μνλλ‘ μμ²νλ κ².
- upstream: μ€νμμ€μ μ μ₯μ
- origin: λ΄κ° forkν μ€νμμ€ μ μ₯μ
- local: λ΄κ° origin μ μ₯μλ₯Ό clone(μ격 μ μ₯μλ₯Ό λ‘컬 μ μ₯μμ 볡μ )ν νμ λ‘컬μμ μμ νλ μ μ₯μ
GitHubλ₯Ό νμ©ν μ€νμμ€ κΈ°μ¬λ λ€μμ 4λ¨κ³λ‘ μ΄λ£¨μ΄μ§λλ€.
κ΄μ¬μ΄ μκ±°λ κΈ°μ¬νκ³ μΆμ νλ‘μ νΈ(upstream)λ₯Ό μ°Ύμμ μ°μΈ‘μ π΄Fork
λ‘ λ΄ κ³μ μ μ격 μ μ₯μ(origin)λ‘ λ³΅μ ν©λλ€.
λ§μμ λλ νλ‘μ νΈλ€ μΆμΌλ©΄ λμ΄ λλ κ²λ μλλ μ°μΈ‘ μλ¨μ βStarλ₯Ό λλ¬μ μ€νμμ€ κ°λ°μμκ² κ°μ¬λ₯Ό νμν©λλ€. (ꡬλ
μ’μμ μλμ€μ κΉμ§)
(μ¬λ¬λΆμ μ΄λ―Έ βStarλ₯Ό λλ¬μ€ κ²λ§ ν΄λ μ€νμμ€μ κΈ°μ¬ν κ²μ λλ€.)
μ°μΈ‘ μλ¨μ πWatchλ₯Ό λλ₯΄λ©΄ λ³Έ νλ‘μ νΈμ λ³κ²½μ¬νκ³Ό κ΄λ ¨λ μλ¦Όμ λ°μ μ μμ΅λλ€.
λλΆλΆ μ²μ μμν λ κΈ°μ¬νκ³ μ νλ μ€νμμ€ νλ‘μ νΈλ₯Ό κ³ λ₯΄λλΌ μκ°μ λ§μ΄ ν μ νλ κ² κ°μ΅λλ€.
(μ μ¬ν νμ¬λ₯Ό μ ννκ±°λ μΈμμ λλ°μλ₯Ό μ°Ύλ κ²μ΄ μλλλ€...)
λ°λμ μ λͺ νκ³ κ·λͺ¨κ° ν° μ€νμμ€μΌ νμλ μμΌλ λ무 μ μ€νμ§ μμλ λ©λλ€.
(κ·λͺ¨κ° ν΄μλ‘ contributorμ issueκ° λ무 λ§κ³ νλ‘μ νΈ κ΅¬μ‘°λ₯Ό νμ νλ λ°μ μ€λ 걸리기 λλ¬Έμ μ²μμλ μμ νλ‘μ νΈκ° μ’μ κ² κ°μ΅λλ€.)
μΈμ λ μ§ λ°κΏ μ μλ κ²μ΄κΈ° λλ¬Έμ κ΄μ¬μ΄ μκΈ°λ νλ‘μ νΈλ©΄ μΌλ¨ forkν΄μ λ€μ¬λ€ 보λ κ²μ μΆμ²ν©λλ€.
λμ μ격 μ μ₯μ(origin)λ‘ forkν νμλ λ΄κ° μνλ λλ‘ μμ μ ν΄λ λ³Έλμ μ μ₯μ(upstream)μλ μν₯μ μ£Όμ§ μμΌλ λ§μκ» κ±΄λλ €λ³΄κ³ μλλ€ μΆμΌλ©΄ μ μ₯μ(origin)λ₯Ό μμ νλ©΄ λ©λλ€.
νλ‘μ νΈλ forkνμΌλ©΄ μ΄μ 본격μ μΌλ‘ νλ‘μ νΈλ₯Ό λ€μ¬λ€λ³Ό μ°¨λ‘μ λλ€.
Code
λ₯Ό λλ¬μ λμ€λ μ μ₯μ(origin) μ£Όμλ₯Ό git clone λͺ
λ Ήμ΄λ‘ λ΄λ €λ°κ±°λ Download ZIP
μ λλ¬μ λμ λ‘컬μ λ΄λ €λ°μ΅λλ€.
νλ‘μ νΈ λ©μΈμ μλ README.md
μ ν΅ν΄μ μ΄λ ν νλ‘μ νΈμΈμ§ λλ΅ νμ
ν©λλ€. μ¬μ κ° λλ€λ©΄ contributing.md
νμΌμ μ°Έκ³ νμ¬ μ€νμμ€ κΈ°μ¬ν μ μλ λ°©λ²μ νμΈν©λλ€.
μμ΄λΌμ μ½κΈ° μ§λ£¨νλ©΄ λ³Έ νλ‘μ νΈ(upstream)λ‘ κ°μ Issueλ₯Ό νμΈν©λλ€. Issueμλ μ€νμμ€λ₯Ό μ¬μ©νλ©΄μ λ°μν λ²κ·Έλ λ¬Έμ νΉμ μ μνκ³ μΆμ κΈ°λ₯μ΄λ κ°μ μ¬νλ€μ΄ μ¬λΌμ΅λλ€.
κ°λ°νλ κ²λΏλ§ μλλΌ μ¬μ©νλ©΄μ μκΈ°λ μ§λ¬Έλ Issueμ ν¬ν¨λ©λλ€.
(κ·Έλ¦¬κ³ Issueλ₯Ό μμ±νλ κ² μ체λ‘λ μ€νμμ€μ κΈ°μ¬ν κ²μ λλ€.)
μ¬κΈ° Issueλ₯Ό λ€μ¬λ€λ³΄λ κ²λ μμ΄λΌμ μ΄λ ΅κ³ μ§λ£¨νλ€ μΆμΌλ©΄ κ°μ₯ μ½κ² μ κ·Όν μ μλ μ€νμ μ°ΎκΈ°λ₯Ό μ§νν©λλ€. (μ?)
μμ λ‘컬μ cloneν νλ‘μ νΈμμ μ€νμκ° μλμ§ μ°Ύμλ΄ λλ€. μ€νμλΏλ§ μλλΌ λ€μ¬μ°κΈ°κ° μ΄μν κ³³μ μμ νκ±°λ μ΄μν ννμ λ°κΎΈλ κ²μΌλ‘λ κΈ°μ¬λ₯Ό ν μ μμ΅λλ€.
μμ νκ³ μΆμ νμΌμ GitHubμμ ν΄λ¦νλ©΄ μ°μΈ‘μ μλ ποΈ(edit) λ²νΌμ λλ¬μ μμ μ΄ κ°λ₯νλ©° gitμ μ΅μν κ²½μ° μ§μ νμΌμ μμ νμ¬ git commit & pushλ‘ λ΄ μ격 μ μ₯μ(origin)μ λ°μν©λλ€.
μ λ λ²νΌ ν μ€νΈμ μ€νμλ₯Ό μ°Ύμμ κ³ μ³€μ΅λλ€... γ γ λ΄ μ격 μ μ₯μ(origin)μμ λ°μμ νμΌλ©΄ λ©μΈ μ μ₯μ(upstream)μ λ°μν μ°¨λ‘μ λλ€.
λ©μΈ μ μ₯μ(upstream)μ λ°μμ νκΈ° μν΄μλ Pull Request(PR)μ μμ±ν΄μΌν©λλ€.
λμκ² λ°₯ λ§κ³ PRμ 보λΈλ€
λ¨Όμ λμ μ μ₯μ(origin)μμ Pull Request
λ²νΌμ λλ¦
λλ€.
λμ μ μ₯μ(origin)μ λΈλμΉμμ PRμ λ°μ λ©μΈ μ μ₯μ(upstream) λΈλμΉλ₯Ό μ νν©λλ€.
μ λ bart2001/exporterhub.io
μ μ₯μ(origin)μ issue/72
λΈλμΉμμ NexClipper/exporterhub.io
μ μ₯μ(upstream)μ main λΈλμΉλ‘ PRμ 보λμ΅λλ€.
(PRμ λ°λ λ©μΈ μ μ₯μμ λΈλμΉλ κ° μ€νμμ€μ κ°μ΄λλΌμΈμ λ°λΌμ μμ΄ν μ μμ΅λλ€.)
μ΄μ λ©μΈ μ μ₯μ(upstream)μ Pull Request λ©λ΄λ₯Ό ν΄λ¦νλ©΄ μμ±ν PRμ νμΈν μ μμ΅λλ€.
PR κ³Όμ μμ μ€νμμ€ λ©μΈν μ΄λ νΉμ λ€λ₯Έ μ¬λλ€μ΄ μ¬λ¬κ°μ§ μ½λ©νΈμ μꡬμ¬νμ λκΈλ‘ μμ±ν μ μμ΅λλ€.
μꡬμ¬νμ λν΄μ μμ μ΄ νμν κ²½μ°μλ PRμ μ§ννκ³ μλ λμ μ μ₯μ(origin)μ λΈλμΉ(μ μ κ²½μ°λ bart2001/exporterhub.io
μ μ₯μμ issue/72
λΈλμΉ)μμ νμΌμ GitHubμμ μμ νκ±°λ λ³κ²½λ νμΌμ git commit & pushλ‘ λ°μν΄μ£Όλ©΄ λ©λλ€.
μꡬμ¬νμ λͺ¨λ μΆ©μ‘±νλ€λ©΄ μ€νμμ€ λ©μΈν
μ΄λκ° Confirm Merge
λ²νΌμ λλ₯΄κ³ λλμ΄ λ©μΈ μ μ₯μ(upstream)μ λ°μμ΄ λ©λλ€!
νλμ μ€νμμ€ νλ‘μ νΈμλ μ¬λ¬ μ¬λλ€μ΄ κΈ°μ¬ν©λλ€.
λ€μ λ§ν΄μ λ΄κ° PRλ‘ λ³Έ μ μ₯μ(upstream)μ λ³κ²½μ¬νμ λ°μνλ κ²λΏλ§ μλλΌ λ€λ₯Έ μ¬λλ€μ PRμ μν΄μ λμ μ μ₯μ(origin)μ λ³Έ μ μ₯μ(upstream)μ νμμ κ³μ λ¬λΌμ§ μ μμ΅λλ€.
λ°λΌμ fetch κΈ°λ₯μ ν΅ν΄μ μ§μμ μΌλ‘ λ³Έ μ μ₯μ(upstream)μ λμ μ μ₯μ(origin)μ μνλ₯Ό λ§μΆμ΄ μ£Όμ΄μΌ λμ λ³κ²½μ¬νμ μΆ©λμμ΄ PRμ ν΅ν΄μ λ³΄λΌ μ μμ΅λλ€.
λμ μ μ₯μ(origin)μ μ°μΈ‘μ μλ πFetch upstream
μ λλ¬μ λ³Έ μ μ₯μ(upstream)μ λμ μ μ₯μ(origin)μ μνλ₯Ό λ§μΆμ΄ μ€λλ€.
λ¬Όλ‘ git λͺ λ Ήμ΄κ° μ΅μνλ€λ©΄ git fetch & merge λͺ λ Ήμ΄λ‘ λμΌνκ² μνν μ μμ΅λλ€.
(μ¬κΈ°μ μΆ©λμ΄ μκΈ°λ κ²½μ°λ gitμ λν μ΄λ μ λμ μ΄ν΄κ° νμνκ³ μ΄ κΈμ λ²μλ₯Ό λ²μ΄λλ―λ‘ λ€λ£¨μ§λ μκ² μ΅λλ€.)
μ‘°κΈμ μ₯λμ€λ½κ² ννν κ°μ΄ μμ§λ§ μ κ° μ€νμμ€ νλ‘μ νΈμ μμ μ΅μ΄(?)λ‘ κΈ°μ¬ν κ²½νμ μ§§κ² κ³΅μ νμμ΅λλ€.
μμ½νμλ©΄ μ€νμμ€ νλ‘μ νΈλ₯Ό μ ννκ³ forkν νμ issue, pull request, fetch κ³Όμ μ λ°λ³΅νλ©΄ λ©λλ€.
μ€ν΄κ° μμ§κ° μμ κ² κ°μμ λ€μ ν λ² λ§μλ리면 μ€νμμ€ κΈ°μ¬κ° λ¨μν μ€νμλ₯Ό μ°Ύμ κ³ μΉλ νμλ μλλλ€.
μ΄ κΈμ ν΅ν΄μ μ€νμμ€ νλ‘μ νΈ κΈ°μ¬κ° μ΄λ ΅κ³ λ§μ°νλ€κ³ λλΌμ§ μκ³ μμ κ°μ μ¬νλΆν° λ°μνλ κ²λΆν° μμν μ μλ€λ κ²μ μμκ°μ ¨μΌλ©΄ μ’κ² μ΅λλ€.
(κ°μκΈ° λ§λ¬΄λ¦¬κ° μ§μ§ν΄μ Έμ μ΄μν©λλ€.)