[Git] 3. reset & revert
π μ°¨μ΄μ
| λͺ λ Ήμ΄ | λͺ©μ | μλ λ°©μ | νμ€ν 리 |
|---|---|---|---|
| reset | μ»€λ° μ체λ₯Ό μμ κ±°λ λλλ¦Ό | λΈλμΉ HEADλ₯Ό κ³Όκ±° 컀λ°μΌλ‘ μ΄λ | νμ€ν 리 μμ λ¨ |
| revert | λλ리λ μ 컀λ°μ μμ± | μ§μ 컀λ°μ λ³κ²½ μ¬νμ λ°λλ‘ μ μ©ν μ μ»€λ° μμ± | νμ€ν 리 λ³΄μ‘΄λ¨ |
μΈμ μ¨μΌ ν κΉ?
reset: λ‘컬 μμ νμ€ν 리λ₯Ό μμ νκ³ μΆμ λrevert: μ΄λ―Έ pushν λΈλμΉμμ μ·¨μνκ³ μΆμ λ
π οΈ git reset
- λΈλμΉ ν¬μΈν°(HEAD)λ₯Ό κ³Όκ±° 컀λ°μΌλ‘ μ΄λν΄μ κ·Έ μ΄ν 컀λ°μ μμ
- λ‘컬 νμ€ν 리λ₯Ό κ°μ λ‘ λ°κΎΈκΈ° λλ¬Έμ 곡μ λ λΈλμΉμλ μ¬μ© X
- λͺ¨λμ λ°λΌ μλ λ²μκ° λ¬λΌμ§λ€.
--soft: HEADλ§ μ΄λ β μμ λλ ν 리μ μ€ν μ΄μ§ μμμ κ·Έλλ‘--mixed: HEAD μ΄λ + μ€ν μ΄μ§ μ΄κΈ°ν β μμ λλ ν 리λ κ·Έλλ‘ (κΈ°λ³Έκ°)--hard: HEAD μ΄λ + μ€ν μ΄μ§ μ΄κΈ°ν + μμ λλ ν 리κΉμ§ λλλ¦Ό β μν!
μμ
1
2
3
4
5
6
7
8
# λ§μ§λ§ 컀λ°μ μμ κ³ μ€ν
μ΄μ§μ μ μ§
git reset --soft HEAD~1
# λ§μ§λ§ 컀λ°μ μμ κ³ μ€ν
μ΄μ§ μ΄κΈ°ν
git reset HEAD~1
# λ§μ§λ§ 컀λ°μ μμ κ³ μμ
λ΄μ©λ μ λΆ λλλ¦Ό (μ£Όμ!)
git reset --hard HEAD~1
μμΈ μμ
μν©: μ€μλ‘ μ»€λ°νλλ°, λ€μ μμ νλ μνλ‘ λλλ¦¬κ³ μΆμ λ
μλ₯Ό λ€μ΄ 컀λ°μ΄ μ΄λ κ² λμ΄μμ λ
1
A -- B -- C (HEAD)
HEADλC컀λ°μ κ°λ¦¬ν€κ³ μκ³ ,C컀λ°μ μμ κ³ μΆλ€λ©΄
git reset --soft HEAD~1HEADκ°Bλ‘ μ΄λC컀λ°μ μμ΄μ§μ§λ§ μμ λ΄μ©κ³Ό μ€ν μ΄μ§μ μ μ§λ¨
1
A -- B (HEAD)
- μμ νμΌκ³Ό μ€ν μ΄μ§μ λ³κ²½μ¬ν λ¨μμ λ€μ μ»€λ° κ°λ₯
git reset --mixed HEAD~1HEADκ°Bλ‘ μ΄λCμ»€λ° μ¬λΌμ§κ³ , μ€ν μ΄μ§ μμμ μ΄κΈ°νλ¨- μμ νμΌμ κ·Έλλ‘ (μμ μνλ‘ λ¨μ μμ)
π οΈ git revert
- κΈ°μ‘΄ 컀λ°μ μ μ§νκ³ , κ·Έ 컀λ°μ μ·¨μνλ λ΄μ©μ μ 컀λ°μ μΆκ°ν¨
- μμ νκ² κΈ°λ‘μ λλ릴 μ μμ΄, μ΄λ―Έ
pushν λΈλμΉμμλ μ¬μ© κ°λ₯ - νμ
μ€μλ
resetλμrevertκΆμ₯!
μμ
1
2
3
4
5
# νΉμ μ»€λ° λλ리λ μ μ»€λ° μμ±
git revert 컀λ°ν΄μ
# μ) λ§μ§λ§ μ»€λ° λλ리기
git revert HEAD
μμΈ μμ
μν©: μ΄λ―Έ μ격 μ μ₯μμ νΈμν μ»€λ° Cλ₯Ό μ·¨μνκ³ μΆμ λ
C컀λ°μ μμ νλ©΄ νμ€ν λ¦¬κ° κΌ¬μ΄λκΉ, μ·¨μ 컀λ°μ λ§λ€μ΄μ λλλ¦°λ€1 2
A -- B -- C -- D (HEAD) β revert μ»€λ° Dgit revet Cλͺ λ Ήμ΄κ°C컀λ°μ λ³κ²½ λ΄μ©μ λ°λλ‘ μ μ©ν D 컀λ°μ μλ‘ λ§λλ κ²- νμ μ€μΈ νλ‘μ νΈμμ μμ νκ² μ·¨μν μ μλ€