β κ°λ°μ λ§μ μ Copy&Pasteκ° μν¨λ€. β
- κ°λ°μ μλ΄(Programmerβs Proverbs)

Git μ΄λ 무μμΈκ°?
Gitμ΄λ λΆμ°ν λ²μ κ΄λ¦¬ μμ€ν (Version Control System) μ ν μ’ λ₯μ΄λ©°, λΉ λ₯Έ μν μλμ μ€μ μ λλ€.
μ°λ¦¬κ° λ ν¬νΈλ₯Ό μ μΆνλ€κ³ κ°μ νμλ, μ²μμ μ μ₯νμλ 'report.txt'λΌκ³ μ μ₯μ νλ€κ° μμ μ νλ©΄μ 'report_final.txt'λ‘ μ μ₯νκ³ λ μμ μ κ±°μΉλ©΄μ 'report_final_final.txt'...λ‘ μμ μ νκ² λλ κ²½νμ΄ μμμ κ²μ΄λ€. μ¬κΈ°μ μ΄ νμΌλ€μ 볡μ¬, λ°±μ , μ μ₯ λ±μ νκ²μ΄κ³ , μ΄λ¬ν κ²μ λ²μ κ΄λ¦¬λΌκ³ λΆλ₯Έλ€.
λ²μ κ΄λ¦¬λ?
λ²μ κ΄λ¦¬ μμ€ν μ νμΌλ³νλ₯Ό μκ°μ λ°λΌ κΈ°λ‘νλ€κ° λμ€μ νΉμ μμ μ λ²μ μ λ€μ κΊΌλ΄μ¬ μ μλ μμ€ν μ΄λ€.
- κ° νμΌμ μ΄μ μνλ‘ λλ릴 μ μλ€.
- νλ‘μ νΈλ₯Ό ν΅μ§Έλ‘ μ΄μ μνλ‘ λλ릴 μ μλ€.
- μκ°μ λ°λΌ μμ λ΄μ©μ λΉκ΅ν΄ λ³Ό μ μλ€.
- λκ° λ¬Έμ λ₯Ό μΌμΌμΌ°λμ§λ μΆμ ν μ μλ€.
- λκ°μΈμ λ§λ€μ΄λΈμ΄μμΈμ§λμμμλ€.
- νμΌμ μμ΄λ²λ¦¬κ±°λ μλͺ» κ³ μ³€μ λλ μ½κ² 볡ꡬν μ μλ€.
Git μ νμμ±
- λμ λ΄ λλ£κ° κ°μ μΉμ¬μ΄νΈμμ λμμ κ°μ 'A'νμ΄μ§λ₯Ό μ λ°μ΄νΈ νκ³ μλ€κ³ νμ.
- λλ 무μΈκ°λ₯Ό λ³κ²½νκ³ μ μ₯ν λ€μ μΉμ¬μ΄νΈμ 'A'νμ΄μ§λ₯Ό μ λ‘λ νλ€.
- κ·Έλ°λ° μ΄λ λλ£κ° λμμ 'A'νμ΄μ§μμ μμ μ ν λ λ¬Έμ κ° λ°μλλ€.
- λ§μ½ νμΈνμ§ μκ³ λμμ μμ μ νλ€λ©΄ λκ΅°κ°μ μμ μ 겹체 μ°μ¬μ§ κ²μ΄κ³ μ§μμ§ κ²μ΄κΈ° λλ¬Έμ΄λ€.
- Gitμ μ΄μ κ°μ μΌμ μ¬μ μ λ°©μ§ν΄μ€λ€.
- λμ λλ£λ κ°μ νμ΄μ§μ κ°μ μμ μ¬νμ μ λ‘λ ν μ μκ³ , λκ°μ 볡μ¬λ³Έμ μ μ₯νλ€.
μ¦, λͺ¨λ κ°μ νκ²½μμ κ°λ°νμ¬ λΆνμν μκ°μ μμ κ³ μλ‘ μ£Όκ³ λ°λ μμ€μ μΌμ΄λλ μΆ©λμ μ΅μν νλ κ²μ΄λΌκ³ λ§ν μ μλ€.
νλ μμν¬λ₯Ό κ°μΆκ³ 곡ν΅μΌλ‘ μ°λ μ½λλ€μ 미리 λ£μ΄λκ³ , ν μ€νΈ μ½λλ μνμ½λλ€μ λ£μ΄μ£Όμ΄μ νλ‘μ νΈ κ°λ° μμνκΈ°μ μ νμ λͺ¨λ κ°μ μ½λλ‘ ν μ€νΈν μ μλ νκ²½λ μ 곡ν μ μλ€.
Git μ μ₯μ
- μμ€ μ½λλ₯Ό μ£Όκ³ λ°μ νμ μμ΄, κ°μ νμΌμ μ¬λ¬ λͺ
μ΄ λμμ μμ
νλ λ³λ ¬ κ°λ°μ΄ κ°λ₯νλ€.
(λΈλμΉλ₯Ό ν΅ν΄ κ°λ°ν λ€, λ³Έ νλ‘κ·Έλ¨μμ ν©μΉλ λ°©μ(Merge)μΌλ‘ κ°λ°μ μ§νν μ μλ€.) - λΆμ° λ²μ κ΄λ¦¬μ΄κΈ° λλ¬Έμ μΈν°λ·μ΄ μ°κ²°λμ§ μμ κ³³μμλ κ°λ°μ μ§νν μ μκ³ , μ€μ μ μ₯μκ° λ λΌκ° λ²λ €λ μμ볡ꡬν μ μλ€.
- ν νλ‘μ νΈκ° μλ, κ°μΈ νλ‘μ νΈμΌμ§λΌλ Gitμ ν΅ν΄ λ²μ κ΄λ¦¬λ₯Ό νλ©΄ 체κ³μ μΈ κ°λ°μ΄ κ°λ₯ν΄μ§κ³ , νλ‘κ·Έλ¨μ΄λ ν¨μΉλ₯Ό λ°°ν¬νλ κ³Όμ λ κ°λ¨ν΄μ§λ€.
Git μλ ꡬ쑰
- λ΄κ° μμ νκ²μ(λ‘컬μ μ₯μ)
- μ격μ μ₯μλ‘ λ°μ΄λ΄κ±°λ(push)
- μ격μ μ₯μμμ μ΅μ νμμ λ΄ μμ 곡κ°μΌλ‘(λ‘컬μ μ₯μ) λΉκ²¨μ¨λ€(pull)

Git λ²μ κ΄λ¦¬ μ리 μ΄ν΄νκΈ°
κ·Έλ¦ΌμΌλ‘ μ΄ν΄νλ λ²μ κ΄λ¦¬ μ리
λ§μΌ λνμ§μ κ·Έλ¦Όμ κ·Έλ¦¬κ³ , κ° κ·Έλ¦Ό μμ±λ λ§λ€ λ²μ Ό κ΄λ¦¬λ₯Ό νλ€κ³ κ°μ νμ.
λ¨Όμ κ·Έλ¦Όμ κ·Έλ¦¬κ³ ,

μ΄λ κ² μ¬μ§μ²© νμ¬ μνλ₯Ό μ μ₯μ νλ€.

κ·Έλ¦¬κ³ λ΄μΌ μμ μ μ΄μ΄λκ° λμ½μ μ κ·Έλ Έλ€κ³ νμ.

λ€μ μμ ν λ΄μ©μ μ¬μ§μ²©μ μΆκ°λ‘ μ μ₯νλ€.

머리μ μμΌμ κ·Έλ¦¬κ³ μ΄ μμ μ¬μ§μ²©μ μΆκ°λ‘ μ μ₯μ νλ€.
κ·Έλ¬λ©΄ μ¬μ§μ²©μλ μ΄ 3κ°μ μμ λ΄μ©μ΄ λ²μ Όλ³λ‘ μ μ₯λ κ²μ νμΈ ν μ μλ€.
κ·Έλ¦¬κ³ κ° μμ λ€μ μμλ₯Ό 맀겨μ€μ λ²μ Ό μμλ₯Ό κΈ°μ΅νλ€.

νμ§λ§ gitμ μ«μλ‘ μΈλ±μ±νμ§μκ³ , ν΄μκ°μΌλ‘ μΈλ±μ±μ νλ€.
ν΄μκ°μ μ€λ³΅μ΄ μλλ€κ³ λ΄λ 무방νλ€.
λ¨ ν΄μκ°μΌλ‘ μμλ₯Ό μμμμΌλ, νΈλ¦¬ μ²λΌ λΆλͺ¨λ₯Ό κ° λ Έλλ§λ€ κΈ°λ‘ν΄μ£Όμ΄ μ§νμμλ₯Ό μμμκ² νλ€.

λ§μΌ 머리λ₯Ό λ€μ κ·Έλ¦¬κ³ μΆλ€λ©΄, μ΄μ λ²μ ΌμΈ ν΄μκ° AB9C8μ μ°Έμ‘°νμ¬ λ€μ κ°μ Έμ€λ©΄ λλ€.

κ·Έλ¦¬κ³ λ¨Έλ¦¬λ₯Ό λ€μ κ·Έλ¦¬κ³ , μ¬μ§μ²©μ μΆκ°λ‘ μ μ₯νλ€. (B3A12)
κ·Έλ¦¬κ³ μμ μμλ₯Ό κΈ°μ΅νκΈ° μν΄ λΆλͺ¨λ₯Ό κΈ°λ‘νλ€.

κ·Έλ¦¬κ³ μμ
μ΄ λΆκΈ°λ‘ λκ°μ§λ‘ λλμ΄μ§λκΉ,
μ΄λμμ
μ΄ λ¬΄μμΈμ§ μκΈ° μ½κ² μμ
λͺ
μ λΆμ¬μ€λ€. (Goatee / Yondu)

Git κΈ°λ³Έ μ©μ΄
Gitμ μ¬μ©νκΈ° μν΄ μμμΌ ν μ©μ΄ λͺκ°μ§κ° μλ€.

Repository
μ€ν μ΄μ§μμ λκΈ°νκ³ μλ νμΌλ€μ λ²μ μΌλ‘ λ§λ€μ΄ μ μ₯νλ κ³³μ΄λ€.
Gitμ μ격 μ μ₯μμ λ‘컬 μ μ₯μ λ μ’
λ₯μ μ μ₯μλ₯Ό μ 곡νλ€.
μ격 μ μ₯μ(Remote Repository)
νμΌμ΄ μ격 μ μ₯μ μ μ© μλ²μμ κ΄λ¦¬λλ©° μ¬λ¬ μ¬λμ΄ ν¨κ» 곡μ νκΈ° μν μ μ₯μλ€.
λ‘컬 μ μ₯μ(Local Repository)
λ΄ PCμ νμΌμ΄ μ μ₯λλ κ°μΈ μ μ© μ μ₯μλ€.μ μ₯μλ₯Ό λ§λλ λ°©λ²μ λ κ°μ§κ° μλ€.
μμ μ μ₯μλ₯Ό μλ‘ λ§λ€κ±°λ, μ΄λ―Έ λ§λ€μ΄μ Έ μλ μ격 μ μ₯μλ₯Ό λ‘컬 μ μ₯μλ‘ λ³΅μ¬ν΄ μ¬ μ μλ€.

μ€ν
μ΄μ§ λ΄μ©μ .git/index νμΌμ μ μ₯λκ³ , μ μ₯μμ λ΄μ©μ .git/HEAD νμΌμ μ μ₯λλ€.
Working Tree (Working Directory)
μ μ₯μλ₯Ό μ΄λ ν μμ μ λ°λΌλ³΄λ μμ μμ νμ¬ μμ .
νμΌ μμ , μ μ₯ λ±μ μμ
μ νλ λλ ν°λ¦¬λ‘, 'μμ
λλ ν°λ¦¬(working directory)'λΌκ³ λ νλ€.
SnapShot
νΉμ μμ μμ νμΌ, ν΄λ λλ μν¬μ€νμ΄μ€μ μνλ₯Ό μλ―Έ.
μ€λ
μ·μ ν΅ν΄ νΉμ μμ μ μ΄λ€ νμΌμ μ΄λ€ λ΄μ©μ΄ κΈ°λ‘λμ΄ μμλμ§, ν΄λ ꡬ쑰λ μ΄λ νλμ§, μ΄λ€ νμΌμ΄ μ‘΄μ¬νλμ§ λ± μ μ₯μμ λͺ¨λ μ 보λ₯Ό νμΈν μ μλ€.
Gitμμλ μλ‘μ΄ λ²μ μ κΈ°λ‘νκΈ° μν λͺ λ ΉμΈ μ»€λ°(commit)μ μ€ννλ©΄ μ€λ μ·μ΄ μ μ₯λλ€
- κ°λ°μλ μμ λλ ν 리μ μλ νμΌμ μμ
- μμ λ νμΌμ λͺ¨μ μ 리νμ¬ λ§λ Snapshotμ Staging λλ ν 리μ μΆκ°νκ³ μ μ₯
- GIT λλ ν 리μ μ μ₯ (Staging λλ ν 리μ μ μ₯λ νμΌμ μμΌλ‘ μꡬ λΆλ³μ μνλ₯Ό μ μ§νλ Snapshot μΌλ‘μ git λλ ν 리μ μ μ₯νλ κ²)
Checkout
μ΄μ λ²μ Ό μμ
μ λΆλ¬μ€λκ².
Staging Area
μ μ₯μμ 컀λ°νκΈ° μ μ 컀λ°μ μ€λΉνλ μμΉ.
μλ₯Ό λ€μ΄ μμ νΈλ¦¬μμ 10κ°μ νμΌμ μμ νλλ° 4κ°μ νμΌλ§ λ²μ μΌλ‘ λ§λ€λ €λ©΄ 4κ°μ νμΌλ§ μ€ν μ΄μ§λ‘ λ겨주면 λλ€. μ¦, λ‘컬 μ€ν μ΄μ§μ μ¬λ €λ νμΌλ§ μ격 μ μ₯μμ 컀λ°ν μκ²©μ΄ μλ κ²μ΄λ€.
Commit
νμ¬ λ³κ²½λ μμ
μνλ₯Ό μ κ²μ λ§μΉλ©΄ νμ νκ³ μ μ₯μμ μ μ₯νλ μμ
.
Head
νμ¬ μμ
μ€μΈ Branchλ₯Ό κ°λ¦¬ν¨λ€.
Branch
κ°μ§ λλ λΆκΈ°μ μ μλ―Ένλ©°, μμ
μ ν λμ νμ¬ μνλ₯Ό 볡μ¬νμ¬ Branchμμ μμ
μ ν νμ μμ νλ€ μΆμλ Mergeλ₯Ό νμ¬ μμ
μ νλ€.
Merge
λ€λ₯Έ Branchμ λ΄μ©μ νμ¬ Branchλ‘ κ°μ Έμ ν©μΉλ μμ μ μλ―Ένλ€.
μ΄μ μ΄ μ©μ΄λ€μ μμ μ¬μ§μ²©μ λΉλμ΄ λ€μ 보μ.

λ§μΌ μ΄μ λ²μ Ό νμΌμ΄ νμνλ€λ©΄..



Git νΈμ€ν μΉ μλΉμ€
κΉ μ μ₯μ μλ²λ₯Ό λμ μ μ§ λ° κ΄λ¦¬ν΄μ£Όλ μλΉμ€ λ€.
λ€λ₯Έ μ μ λ€κ³Ό ν¨κ» μ¨λΌμΈμΌλ‘ νλμ νλ‘κ·Έλ¨μ μ μνλκ²λ κ°λ₯νλ©° λ§μ μ€νμμ€ νλ‘κ·Έλ¨λ€μ΄ Githubλ₯Ό ν΅ν΄μ μ μΈκ³ κ°λ°μλ€μ μν΄ μ μλκ³ μλ€. μ£Όλ‘ κ°μΈμ GitHub, νμ¬λ GitLabλ₯Ό μ¬μ©νλ νΈμ΄λ€.



Github vs GitLab
κΉνλΈλ μΈκ³μ΅λ κ·λͺ¨μ Git μ μ₯μλ‘ λ¬΄λ£ μλ²μ μ₯μλ₯Ό μ§μνκΈ°λλ¬Έμ, μ΄κΈ~κ³ κΈ κ°λ°μ λͺ¨λ μ΄μ©νλ©°, μλ§μ κ°μΈ κ°λ°μλ€, νκ°λ°μλ€μ΄ μ΄μ©νλ μλΉμ€μ΄λ€.
κΉνλΈλ 무λ£λ‘ μ΄μ©νλλμ μμ μ μμ€μ½λκ° μ€νλμ΄ μλ§μ μ¬λλ€μ΄ 보며 νμ©κ°λ₯νκ³ , μ΅λͺ μ κ°λ°μμ ν¨κ» μμ ν μμλλ‘ νμ¬ νλ‘κ·Έλλ°μ λμ± νμ°μμΌμ£Όλ νκ²½μΌλ‘ μ리νκ³ μλ€.
λ°λ©΄ GitLab(κΉλ©)μ μλ§μ κΈ°μ μμ 보μμ±μ μ€μνλ νλ‘κ·Έλ¨ μ½λλ₯Ό μ¬λ € ν¨κ» νμ νλ ν΄λ‘ μ μ©νλ―λ‘, μ¬μ©μκ° κΈ°μ λ€μ΄ λλ©°, μμ μ μλ²μ μ€μΉνμ¬ μλ²λ΄ νλΌμ΄λΉν Git μ격 μ μ₯μλ₯Ό λ§λ€μμλ μλΉμ€μ΄λ€.
# μ°Έκ³ μλ£
https://www.youtube.com/watch?v=oQ4kT8KhRY8
https://uxgjs.tistory.com/182
μ΄ κΈμ΄ μ’μΌμ ¨λ€λ©΄ ꡬλ & μ’μμ
μ¬λ¬λΆμ ꡬλ
κ³Ό μ’μμλ
μ μμκ² ν° νμ΄ λ©λλ€.