[Git] Gitμ κ°λ κ³Ό μ¬μ©λ°©λ²
0. Git
λκ°λ₯Ό λ§λ€κ³ νλ‘μ νΈλ₯Ό μ§ννλ©΄, μ»΄ν¨ν°μ νΉμ ν΄λμ μμ λ¬Όλ€μ λ£μ΄λκ² λλ€. Gitμ μ΄ ν΄λ μμ μκ°μ¬νμ΄ κ°λ₯ν ννμ°μ£Όλ€μ λ§λλ κ²μ΄λ€. μ°λ¦¬κ° νν μκ³ μλ Githubλ μ΄ Gitμ 곡μ νκ³ κ΄λ¦¬ν μ μλ ν΄λΌμ°λμ΄λ€.
μκ° μ¬ν
μκ° μ¬νμ΄ κ°λ₯νλ€λ 건 λ΄κ° μμ΅νκΈ° μ΄λ €μ΄ μ€μλ₯Ό νμ λ, νΉμ μ μ΄λ λκ° λ°λμλμ§ ν·κ°λ¦΄ λ μΈμ λ ν΄λ λ΄ μνλ₯Ό κ³Όκ±°λ‘ λ릴 μ μλ€λ κ²μ΄λ€. μμ λͺ¨λ νμΌμ μ μ₯λ μνλ₯Ό μκΉλ‘, μκ·Έμ λ‘, νΉμ 맨 μ΄κΈ°λ‘ λ릴 μ μκ³ νΉλ³ν μ΄λ€ νμν κ²λ§ μ±κ²¨μ κ°μ Έμ¬ μλ μλ€.
νν μ°μ£Ό
λ§μ½ νμ¬ μ½λμμ μλν΄λ³΄κ³ μΆμ κ²μ΄ μκ±°λ λ³κ²½ν΄λ³΄κ³ μΆμ λΆλΆμ΄ μλ€λ©΄, μ½λμ ννμ°μ£Όλ₯Ό λ§λ€μ΄ μλλ₯Ό ν΄λ³΄λ€κ° λ§μμ λ€λ©΄ λ€μ ν©μΉ μλ μλ€.
1. Git μ¬μ©λ²
Gitμ μ¬μ©νλ λ²μ CLI(Command line Interface)λ‘ λͺ λ Ήμ΄λ₯Ό μ λ ₯νλ λ°©λ², Source Treeμ κ°μ΄ GUI(Graphical User Interface)λ₯Ό μ΄μ©νλ λ°©λ²μ΄μλ€. CLIλ λ°λ‘ μ€μΉν΄μ€ νμλ μκ³ λ€μ 3κ°μ§κ° μ€μΉλμλμ§λ₯Ό νμΈνμ.
CLIλ‘ Git μ¬μ©ν΄λ³΄κΈ°
git μ μ₯μ μμ±
git init // git μ μ₯μ μμ±
git config --global user.name "(λ΄μ΄λ¦)" // μ΄λ¦ λ±λ‘
git config --global user.email "(λ΄ λ©μΌμ£Όμ)" // μ΄λ©μΌ λ±λ‘
μμ μ λ§μΉλ©΄ .git νμΌμ΄ μ¨κΉνμΌλ‘ μμ±λλ€. μ΄ νμΌμ κ΄λ¦¬μ νμν μ λ³΄κ° κΈ°λ‘λλ κ²μ΄λ―λ‘ μμ ν λ μ΄ νμΌμ μ§μλ²λ¦¬λ©΄ λλ€.
νμ¬ μμ μ μ μ₯
git status // νμ¬ gitμ μν νμΈ
git add -A // ν΄λμ λͺ¨λ κ²μ νμμΊ‘μ μμ λ΄κ² λ€(stage νκ² λ€)
git commit -m "νμμΊ‘μμ λν μ€λͺ
" // λμ€μ κΊΌλΌ λλ₯Ό λλΉν΄ μ€λͺ
μ λ¬κ³ , νμμΊ‘μμ λ¬»κ² λ€
git log // gitμ νμμΊ‘μλ€μ νμΈ
addλ‘ νμμΊ‘μ μμ νμΌμ λ΄λλ€. commitλ‘ νμμΊ‘μμ 묻λλ€. λ€μ λ§νλ©΄, addλ‘ gitμ΄ μΆμ ν μ μλλ‘ stageμ νμΌλ€μ μ¬λ¦¬κ³ , commitμΌλ‘ νμ¬ ν΄λ μνλ₯Ό μ¬μ§μ°μ΄ λ²μ μ λ§λλ κ²μ΄λ€. μμΈν μ¬νμ λ§ν¬λ₯Ό μ°Έκ³ !
κ³Όκ±°λ‘ λμκ°κΈ°
git log // ν΄λΉ νμμΊ‘μμ λ²νΈ νμΈ
git reset "μΌλ ¨λ²νΈ" --hard // μ΄ νμμΊ‘μ μ΄νμ λ³κ²½μ λ€μ λͺ¨λ μμ
git revert "μΌλ ¨λ²νΈ" // μ΄ νμμΊ‘μμ λ³κ²½μ λ€μ μ·¨μν νμμΊ‘μμ μλ‘ λ¬»λλ€
resetμ ν΄λΉ νμμΊ‘μλ‘ λμκ°κ³ μ΄ νμ μμ λ€μ λͺ¨λ μ·¨μνλ κ²μ΄κ³ , revertλ ν΄λΉ μμ μΌλ‘ λ³κ²½λ κ²λ€μ μ·¨μν μΊ‘μμ μλ‘ λ¬»λ κ²μ΄λ€. resetμ ν λ² νλ©΄ λμκ° μ μμΌλ μ μ€ν νλλ‘ νμ.
branch μμ±
git branch "branch μ΄λ¦" // κΈ°μ‘΄ branch "master"μμ μλ‘μ΄ ννμ°μ£Ό μμ±
git checkout "branch μ΄λ¦" // ν΄λΉ branch ννμ°μ£Όλ‘ μ΄λ
git merge "branch μ΄λ¦" // νμ¬ μλ μ°μ£Όμλ€κ° ν΄λΉμ΄λ¦μ κ°μ§ ννμ°μ£Όμ λ³κ²½μ λ€μ κ°μ Έμ ν©μΉ¨
git log --graph --all --decorate // ννμ°μ£Όμμμ μμ
λ΄μμ 보μ¬μ€
λ¬Όλ‘ μ’ λ μ΅μν΄μ ΈμΌκ² μ§λ§, μ£Όμμ μ½μ΄λ³΄λ©΄ μ λ§ νΈλ¦¬ν κΈ°λ₯μ΄ μλ μ μλ€! νμ§λ§ λ§μ½ λ€λ₯Έ μ°μ£Όμμ νΉμ λΆλΆμ λ€λ₯΄κ² μμ νλ©΄ μ΄λ»κ² λ κΉ? conflictλ₯Ό ν΄κ²°νλΌλ λ©μΈμ§κ° λ¬λ€. λ μ€ ν μͺ½μ μ§μμ£Όκ³ add λ° commitμ ν΄μ£Όμ! μ¬λ¬ branchμμ μμ νλ€λ©΄ κ°μ νμΌμ μμ νμ§ μλλ‘ μ‘°μ¬νλλ‘ νμ.
rebase νκΈ°
git rebase "branch μ΄λ¦" // mergeμ²λΌ κ°μ§λ₯Ό κΈ°λ₯μ λ€μ ν©μΉλκ² μλλΌ, κ°μ§λ₯Ό λΌλ€ κΈ°λ₯μ μ΄μ΄λΆμ
git branch -D "branch μ΄λ¦" // λ€ μ΄ branchλ₯Ό μμ
μ λ΄μ©μ 'μνν μ½λ©μ¬μ 'μ λ³΄κ³ μ 리 λ° μΆκ°ν κ²μ λλ€.