[Git] κΉ(Git)μ νμ©ν νλ‘μ νΈ κ΄λ¦¬
κΉ(Git)μ νμ©ν νλ‘μ νΈ κ΄λ¦¬
κΉ(Git)μ λΆμ° λ²μ κ΄λ¦¬ μμ€ν μΌλ‘, λ€μν νλ‘μ νΈμμ μμ€μ½λμ λ¬Έμλ₯Ό κ΄λ¦¬νκ³ νμ μ ν λ ν¨μ¨μ μΌλ‘ μ¬μ©λ©λλ€. κΉμ νμ©νμ¬ νλ‘μ νΈλ₯Ό κ΄λ¦¬νλ λ°©λ²μ λν΄μ μμλ³΄κ² μ΅λλ€.
-
κΉμ μ¬μ©λ²
1. Repository(μ μ₯μ) μμ±
νλ‘μ νΈλ₯Ό κ΄λ¦¬νκΈ° μν΄μλ λ¨Όμ κΉ μ μ₯μλ₯Ό μμ±ν΄μΌ ν©λλ€. κΉ μ μ₯μλ λ‘컬 μ μ₯μμ μ격 μ μ₯μλ‘ λλλ©°, λ‘컬 μ μ₯μλ κ°λ°μμ κ°λ° νκ²½μμ μ¬μ©λλ μ μ₯μμ΄λ©°, μ격 μ μ₯μλ λ€λ₯Έ κ°λ°μμ νμ ν λ μ¬μ©λλ μ μ₯μμ λλ€.
1 2 $ git init # λ‘컬 μ μ₯μ μμ± $ git remote add origin [μ격 μ μ₯μ URL] # μ격 μ μ₯μμ λ‘컬 μ μ₯μ μ°κ²°
2. Branch(λΈλμΉ) κ΄λ¦¬
κΉμ λΈλμΉ κΈ°λ₯μ μ 곡νμ¬, λ 립μ μΈ μμ λΌμΈμμ μμ μ ν μ μμ΅λλ€. μλ‘μ΄ κΈ°λ₯ μΆκ°λ λ²κ·Έ μμ λ±μ μν΄ λ 립μ μΈ λΈλμΉλ₯Ό μμ±νμ¬ μμ νλ©΄, λ€λ₯Έ μμ λΌμΈμμμ μν₯μ μ΅μνν μ μμ΅λλ€. μ΄μ λν΄μ λ κΆκΈνμ λΆμ 4. κΉ(Git) Branchμ λν μ΄ν΄μ νμ©μμ μ’ λ μμΈν λ΄μ©μ νμΈν΄ λ³΄μ€ μ μμ΅λλ€.
1 2 $ git branch [λΈλμΉ μ΄λ¦] # λΈλμΉ μμ± $ git checkout [λΈλμΉ μ΄λ¦] # λΈλμΉλ‘ μ΄λ
3. Commit(컀λ°) κ΄λ¦¬
λ³κ²½ λ΄μμ μ μ₯μμ κΈ°λ‘νλ μμ μ 컀λ°μ΄λΌκ³ ν©λλ€. κ°κ°μ 컀λ°μ κ³ μ ν ν΄μκ°μ κ°μ§λ©°, λ³κ²½ λ΄μμ μ΄λ ₯μ μΆμ ν μ μμ΅λλ€.
1 2 $ git add [λ³κ²½λ νμΌ] # νμΌ μΆκ° $ git commit -m "[μ»€λ° λ©μμ§]" # μ»€λ° μμ±
4. νλ‘μ νΈ μ΄λ ₯ μΆμ λ° κ΄λ¦¬
κΉμ νμ©νλ©΄ νλ‘μ νΈμ λ³κ²½ μ΄λ ₯μ μΆμ νκ³ κ΄λ¦¬ν μ μμ΅λλ€. μ΄μ λ²μ μΌλ‘ λμκ°λ λ± λ€μν μμ μ΄ κ°λ₯ν©λλ€.
1 2 3 $ git log # μ»€λ° μ΄λ ₯ νμΈ $ git diff [μ»€λ° ν΄μ] [μ»€λ° ν΄μ] # μ»€λ° κ° μ°¨μ΄μ νμΈ $ git reset --hard [μ»€λ° ν΄μ] # νΉμ 컀λ°μΌλ‘ μ΄λ
-
Git μ£Όμ λͺ λ Ήμ΄ μ 리 λ° μ€λͺ
Gitμ κ°λ ₯ν λΆμ° λ²μ κ΄λ¦¬ μμ€ν μΌλ‘, μμ€ μ½λμ λ³κ²½ μ΄λ ₯μ κ΄λ¦¬νκ³ νμ μ ν¨μ¨μ μΌλ‘ μ§μν©λλ€. νμ§λ§ λ€μν λͺ λ Ήμ΄λ‘ μΈν΄ νΌλμ€λ¬μΈ μ μμ΅λλ€. μ΄ κΈμμλ μμ£Ό μ¬μ©λλ μ£Όμ Git λͺ λ Ήμ΄λ€μ μ€λͺ κ³Ό ν¨κ» μ 리νμμ΅λλ€.
1. μ μ₯μ μ΄κΈ°ν λ° λ³΅μ
1.1 git init
- μ€λͺ
: μλ‘μ΄ Git μ μ₯μλ₯Ό μ΄κΈ°νν©λλ€. νμ¬ λλ ν 리λ₯Ό Git κ΄λ¦¬ νμ λλ©°
.gitλλ ν λ¦¬κ° μμ±λ©λλ€. -
μ¬μ© μμ:
1
git init
μ΄ λͺ λ Ήμ μ€ννλ©΄ νμ¬ λλ ν 리μμ Gitμ΄ λ³κ²½ μ¬νμ μΆμ νκΈ° μμν©λλ€.
1.2 git clone <repository_url>
- μ€λͺ : μ격 μ μ₯μλ₯Ό λ‘μ»¬λ‘ λ³΅μ ν©λλ€. μ΄ λͺ λ Ήμ΄λ μ격 μ μ₯μμ μ 체 μ΄λ ₯μ λ€μ΄λ‘λν©λλ€.
-
μ¬μ© μμ:
1
git clone https://github.com/user/repository.git
URLμ ν΄λΉνλ μ μ₯μκ° λ‘컬 λλ ν 리μ 볡μ λ©λλ€.
2. λ³κ²½ μ¬ν κ΄λ¦¬
2.1 git status
- μ€λͺ : νμ¬ μμ λλ ν 리μ μ€ν μ΄μ§ μμμ μνλ₯Ό νμΈν©λλ€.
-
μ¬μ© μμ:
1
git status
μμ λ νμΌ, μΆκ°λμ§ μμ νμΌ, μ»€λ° λκΈ° νμΌ λ±μ΄ νμλ©λλ€.
2.2 git add <file>
- μ€λͺ : μ§μ ν νμΌμ λ³κ²½ μ¬νμ μ€ν μ΄μ§ μμμ μΆκ°ν©λλ€.
-
μ¬μ© μμ:
1
git add main.py
main.pyμ λ³κ²½ μ¬νμ΄ μ€ν μ΄μ§ μμμ μΆκ°λ©λλ€.
2.3 git add .
- μ€λͺ : νμ¬ λλ ν 리μ λͺ¨λ λ³κ²½ μ¬νμ μ€ν μ΄μ§ μμμ μΆκ°ν©λλ€.
-
μ¬μ© μμ:
1
git add .
λ³κ²½λ λͺ¨λ νμΌμ΄ μ€ν μ΄μ§ μμμ μΆκ°λ©λλ€.
2.4 git commit -m "λ©μμ§"
- μ€λͺ : μ€ν μ΄μ§λ λ³κ²½ μ¬νμ κΈ°λ‘νλ©°, μ»€λ° λ©μμ§λ₯Ό μΆκ°ν©λλ€.
-
μ¬μ© μμ:
1
git commit -m "μ΄κΈ° 컀λ°"
μ΄ λͺ λ Ήμ μ€ν μ΄μ§λ λ³κ²½ μ¬νμ βμ΄κΈ° 컀λ°β λ©μμ§μ ν¨κ» κΈ°λ‘ν©λλ€.
3. λΈλμΉ κ΄λ¦¬
3.1 git branch
- μ€λͺ : νμ¬ μ μ₯μμ λΈλμΉ λͺ©λ‘μ νμν©λλ€.
-
μ¬μ© μμ:
1
git branch
νμ¬ λΈλμΉκ° λ³ν(*)λ‘ νμλ©λλ€.
3.2 git branch <branch_name>
- μ€λͺ : μλ‘μ΄ λΈλμΉλ₯Ό μμ±ν©λλ€.
-
μ¬μ© μμ:
1
git branch feature/login
feature/loginμ΄λΌλ μ λΈλμΉκ° μμ±λ©λλ€.
3.3 git checkout <branch_name>
- μ€λͺ : μ§μ ν λΈλμΉλ‘ μ νν©λλ€.
-
μ¬μ© μμ:
1
git checkout feature/login
feature/loginλΈλμΉλ‘ μμ μ μ νν©λλ€.
3.4 git checkout -b <branch_name>
- μ€λͺ : μ λΈλμΉλ₯Ό μμ±νκ³ μ¦μ ν΄λΉ λΈλμΉλ‘ μ νν©λλ€.
-
μ¬μ© μμ:
1
git checkout -b feature/register
feature/registerλΌλ μ λΈλμΉκ° μμ±λκ³ μμ λΈλμΉλ‘ μ νλ©λλ€.
3.5 git merge <branch_name>
- μ€λͺ : λ€λ₯Έ λΈλμΉλ₯Ό νμ¬ λΈλμΉμ λ³ν©ν©λλ€.
-
μ¬μ© μμ:
1
git merge feature/login
feature/loginλΈλμΉλ₯Ό νμ¬ λΈλμΉμ λ³ν©ν©λλ€.
4. μ격 μ μ₯μ μμ
4.1 git remote add origin <repository_url>
- μ€λͺ : λ‘컬 μ μ₯μμ μ격 μ μ₯μλ₯Ό μΆκ°ν©λλ€.
-
μ¬μ© μμ:
1
git remote add origin https://github.com/user/repository.git
μ격 μ μ₯μ
originμ΄ μΆκ°λ©λλ€.
4.2 git push origin <branch_name>
- μ€λͺ : λ‘컬 λ³κ²½ μ¬νμ μ격 μ μ₯μμ μ λ‘λν©λλ€.
-
μ¬μ© μμ:
1
git push origin main
λ‘컬
mainλΈλμΉκ° μ격 μ μ₯μμ μ λ‘λλ©λλ€.
4.3 git pull origin <branch_name>
- μ€λͺ : μ격 μ μ₯μμ λ³κ²½ μ¬νμ λ‘μ»¬λ‘ κ°μ Έμ΅λλ€.
-
μ¬μ© μμ:
1
git pull origin main
μ격
mainλΈλμΉμ λ³κ²½ μ¬νμ΄ λ‘μ»¬λ‘ λ³ν©λ©λλ€.
5. λ‘κ·Έ λ° μ΄λ ₯ νμΈ
5.1 git log
- μ€λͺ : μ»€λ° μ΄λ ₯μ νμν©λλ€.
-
μ¬μ© μμ:
1
git log
μ»€λ° ν΄μ, μμ±μ, λ μ§, λ©μμ§κ° νμλ©λλ€.
5.2 git log --oneline
- μ€λͺ : κ°λ¨ν νμμΌλ‘ μ»€λ° μ΄λ ₯μ νμν©λλ€.
-
μ¬μ© μμ:
1
git log --oneline
κ° μ»€λ°μ΄ ν μ€λ‘ μμ½λ©λλ€.
5.3 git log --graph
- μ€λͺ : λΈλμΉμ λ³ν© μ΄λ ₯μ κ·Έλνλ‘ νμν©λλ€.
-
μ¬μ© μμ:
1
git log --graph
λΈλμΉ κ΅¬μ‘°λ₯Ό μκ°μ μΌλ‘ νμΈν μ μμ΅λλ€.
π΅ μ΄? git log μ€ννλλ° λκ° μκ° μμ΄μ!!
git logλͺ λ Ήμ΄λ₯Ό μ€ννλ©΄ ν°λ―Έλμ μ¬λ¬ μ»€λ° λ‘κ·Έκ° νμλκ³ , λ λ§μ λ‘κ·Έλ₯Ό 보기 μν΄ μ€ν¬λ‘€ν μ μλ μνκ° λ©λλ€.
- μ΄ μνλ
lessλΌλ νμ΄μ§ λ€μ΄ν°(paginator) λꡬλ₯Ό μ¬μ©νλ λͺ¨λμ λλ€.
- μ¬κΈ°μμ λ‘κ·Έ νλ©΄μ μ’ λ£νλ €λ©΄ μλ λ¨κ³λ₯Ό λ°λΌμΌ ν©λλ€:
λ‘κ·Έ 보기 μ’ λ£ λ°©λ²
qν€ λλ₯΄κΈ°
git logμΆλ ₯ νλ©΄μμqν€λ₯Ό λλ₯΄λ©΄ λ‘κ·Έ 보기λ₯Ό μ’ λ£νκ³ μΌλ° ν°λ―Έλλ‘ λμκ°λλ€.
μΆκ° ν
-
νλ©΄ λ΄ μ΄λ
- μλ‘ μ€ν¬λ‘€:
kλλ νμ΄ν μ(β) ν€ - μλλ‘ μ€ν¬λ‘€:
jλλ νμ΄ν μλ(β) ν€ - νμ΄μ§ λ¨μ μ΄λ:
- μλ‘:
bν€ - μλλ‘: μ€νμ΄μ€λ°(
Space) ν€
- μλ‘:
- μλ‘ μ€ν¬λ‘€:
-
κ²μ κΈ°λ₯ μ¬μ©
/λ₯Ό μ λ ₯ν ν κ²μμ΄λ₯Ό μ λ ₯νλ©΄ ν΄λΉ ν€μλκ° ν¬ν¨λ λ΄μ©μ κ²μν μ μμ΅λλ€.
μ:/fixλ₯Ό μ λ ₯νλ©΄ λ©μμ§μfixκ° ν¬ν¨λ 컀λ°μ μ°Ύμ΅λλ€.
6. κ³ κΈ λͺ λ Ήμ΄
6.1 λ³κ²½ μ¬ν λλ리기
-
git reset <file>: μ€ν μ΄μ§λ νμΌμ μΈμ€ν μ΄μ§ν©λλ€.1
git reset main.py
-
git reset --hard HEAD: λ§μ§λ§ μ»€λ° μνλ‘ μμ λλ ν 리λ₯Ό λλ립λλ€. (μ£Όμ: λ³κ²½ μ¬ν μμ )1
git reset --hard HEAD
-
git revert <commit_hash>: νΉμ 컀λ°μ μ·¨μνλ μ 컀λ°μ μμ±ν©λλ€.1
git revert abc123
6.2 μμ μ μ₯
-
git stash: νμ¬ μμ λ΄μ©μ μμ μ μ₯ν©λλ€.1
git stash
-
git stash pop: κ°μ₯ μ΅κ·Όμ μμ μ μ₯μ μ μ©νκ³ μ€νμμ μ κ±°ν©λλ€.1
git stash pop
6.3 λΈλμΉ μ¬λ°°μΉ
-
git rebase <branch_name>: νμ¬ λΈλμΉλ₯Ό λ€λ₯Έ λΈλμΉ μλ‘ μ¬λ°°μΉν©λλ€.1
git rebase main
μ΄ κΈμμ λ€λ£¬ λͺ
λ Ήμ΄λ€μ Gitμ ν΅μ¬ κΈ°λ₯μ μ΄ν΄νκ³ νμ©νκΈ° μν κΈ°λ³Έ μ§μΉ¨μ
λλ€. μΆκ°μ μΈ μ΅μ
μ΄λ κ³ κΈ μ¬μ©λ²μ git help <command>λ₯Ό ν΅ν΄ νμΈν μ μμ΅λλ€. Gitμ ν¨κ³Όμ μΌλ‘ νμ©νκΈ° μν΄ μ§μμ μΌλ‘ μ€μ΅νκ³ λ€μν μλ리μ€λ₯Ό κ²½νν΄ λ³΄μΈμ.